Script Variablen/Verarbeitung

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
KingBonecrusher
Beiträge: 375
Registriert: 07.06.2005 09:48:43

Script Variablen/Verarbeitung

Beitrag von KingBonecrusher » 08.02.2007 11:44:04

Hi,

kann mir jemand vielleicht sagen, ob es möglich wäre die Länge einer Variablen zu bestimmten? Wenn i="Hallo Kurt" ist, würde ich gerne wissen, dass es 10 Zeichen sind. Ich möchte für eine Ausgabe auf dem Bildschirm die Länge anpassen, und z.B. bis zum 15ten Zeichen eben Leerzeichen einfügen. Das am Ende eben das rauskommt: i="Hallo Kurt "

Zudem würde ich gerne wissen, ob es möglich ist mit Scripten etwas komplexer zu rechnen, ich habe den Wert 2000,300 und will diesen durch 1000 teilen, aber mit expr klappt das nicht. Er kommt wohl mit der Kommazahl nicht klar. Ich habe schon versucht das Komma mit einem Punkt zu ersetzen. Zudem würde mich auf/ab-runden, sowie verkürzen Interessieren. Also aus 100,290 dann eben 100,29 machen zu können.

mfg

Kase
Beiträge: 124
Registriert: 24.01.2005 22:15:40

Beitrag von Kase » 08.02.2007 12:34:48

Die Länge einer Zeichenkette ist ganz einfach:

Code: Alles auswählen

expr length $VAR
Die anderen Sachen weiß ich auf die schnelle leider nicht auswendig.

Benutzeravatar
Night.Hawk
Beiträge: 655
Registriert: 24.05.2003 11:00:39
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Night.Hawk » 08.02.2007 12:51:19

Ich glaube so ist es besser:

Code: Alles auswählen

expr length "$VAR"
Gruß

Night.Hawk
________________________________________________
Leben und leben lassen ...

KingBonecrusher
Beiträge: 375
Registriert: 07.06.2005 09:48:43

Beitrag von KingBonecrusher » 08.02.2007 13:24:44

Hi, hat super funktioniert. Leider scheitere ich an was ganz simplen. Hinzufügen von Daten an die bestehende Variable :-(

Wie gesagt, habe i="Hallo", soll aber dann i="Hallo " werden.

Code: Alles auswählen

bt="HALLO"
rt=`expr length "$bt"`

until [ $rt = 15 ] #### Ist das = korrekt?
do
echo $rt
echo $bt
bt=$bt & " " #### WIE GEHT DAS? VARIABLEN ERWEITERN
rt=`expr length $bt`
done
Zudem habe ich noch ein Array, und dort will ich die 2te Variable ändern.
Wie spreche ich denn diese Variable an? Ich kann ja nicht einfach:

Code: Alles auswählen

${i[1]}="Hallo"
Schreiben oder? Die Bash will doch:

Code: Alles auswählen

i=( ARRAY1 ARRAY2 ARRAY3 )
mfg

Benutzeravatar
Lohengrin
Beiträge: 3227
Registriert: 29.08.2004 00:01:05
Wohnort: Montsalvat

Beitrag von Lohengrin » 08.02.2007 13:31:23

Wie man Strings bearbeitet steht hier. Du kannst dir die neuste Version als .tar.bz2 hier runterladen.
Das Aneinanderhängen von Strings geht so:

Code: Alles auswählen

eins="hallo"
zwei=$hallo" "
echo ${#zwei}  # Antwort: 6
Um Hallo Kurt oä auf 15 Zeichen zu bringen, kannst du dies tun

Code: Alles auswählen

eins="Hallo Kurt"
zwei="$eins""               "
drei=${zwei:0:15}
KingBonecrusher hat geschrieben:Zudem habe ich noch ein Array, und dort will ich die 2te Variable ändern.
Wie spreche ich denn diese Variable an? Ich kann ja nicht einfach:

Code: Alles auswählen

${i[1]}="Hallo"
Natürlich nicht. Das Linke ist die Variable, nicht deren Inhalt.

Code: Alles auswählen

i[1]="Hallo"
funktioniert.
KingBonecrusher hat geschrieben:Zudem würde ich gerne wissen, ob es möglich ist mit Scripten etwas komplexer zu rechnen, ich habe den Wert 2000,300 und will diesen durch 1000 teilen, aber mit expr klappt das nicht. Er kommt wohl mit der Kommazahl nicht klar. Ich habe schon versucht das Komma mit einem Punkt zu ersetzen.
Das geht mit bc. Mehr dazu hier.
Zuletzt geändert von Lohengrin am 08.02.2007 19:20:01, insgesamt 1-mal geändert.

KingBonecrusher
Beiträge: 375
Registriert: 07.06.2005 09:48:43

Beitrag von KingBonecrusher » 08.02.2007 16:17:14

Danke für die Super Tipps...

Habe folgendes gemacht:

Code: Alles auswählen

x="BENUTZER:"
y=" "
while [ ${#x} != 25 ]
do
y=$x" "
x=$y
done
echo "$x Winfried Wühlmaus"
Das funktioniert super. Müsste man natürlich bisschen verkleinern :-)

Ach ja, kann ich Funktionen auch in andere Dateien packen? Sowas wie include in c?

Benutzeravatar
Lohengrin
Beiträge: 3227
Registriert: 29.08.2004 00:01:05
Wohnort: Montsalvat

Beitrag von Lohengrin » 08.02.2007 19:13:34

KingBonecrusher hat geschrieben:Ach ja, kann ich Funktionen auch in andere Dateien packen? Sowas wie include in c?
Such mal im Inhaltsverzeichnis des Howtos auf das ich verwiesen habe nach include. ;)

roli
Beiträge: 3174
Registriert: 10.09.2003 17:39:58

Beitrag von roli » 09.02.2007 09:52:47

Hi,

um die Laenge des String zu ermitteln koenntest du auch:

Code: Alles auswählen

i="Hallo Kurt"
my_length=$(echo $i|wc -m)
Ich konnte es allerdings nur mittey einer BusyBox testen, da musste ich anstelle von -m -c verwenden.

Um Funktionen aus einem Shellscript in eine andere Datei auszulagern, nutze ich folgendes:

Code: Alles auswählen

# bla bla bla

function meine_auszulagernde_Funktion { 

  . $Pfad_zur_datei/$Include_file.sh

}

# bla bla bla

meine_auszulagernde_Funktion  #hier wird die Funktion aufgerufen
In der Datei die ich hier einbinde, ist allerdings nur diese eine Funktion enthalten!
Du musst auf den Punkt und das anschliessende Leerzeichen achten das vor dem Pfad zum Include File steht.
Das ganze kann man zum einen unter "Punkt Komando" oder unter "Sourcen" finden.
Roland


"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 09.02.2007 20:38:54

KingBonecrusher hat geschrieben:bt=$bt & " " #### WIE GEHT DAS? VARIABLEN ERWEITERN

Code: Alles auswählen

bt="$bt "

Antworten