• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Die Bildungsoffensive hier im Forum geht weiter! Jetzt sollen Kreativität und technische Möglichkeiten einen neue Dimension erreichen. Das Thema in diesem Monat lautet - Verkehrte Welt - Hier geht es lang --> Klick

Anfängerfrage

Frankplanlos

Stechapfel
Registriert
21.04.07
Beiträge
157
Hallo Forum,
ich lerne gerade ein wenig wie die Shell programmiert wird. Zumindest fangen wir in der FH damit an. Dort benutzen wir Solaris als BS, ich möchte natürlich auf meinem Mac üben und stosse jetzt schon auf Probleme.

Code:
 index='expr $index + 1'
 echo $index
ich würde gerne die Zählvariable ausgeben, jedoch geht das nicht. Der Code befindet sich auch in einer Schleife.

Wo ist mein Fehler?
Gruß

Frank
 
Ich stelle den ganzen Code rein. Beim Aufruf übergebe ich noch ein paar Argumente.
if [ $# -eq 0 ]
then echo Es wurden keine Argumente übergeben
else
"
Es wurden $# Parameter uebergeben
"
until [ $# -lt 1 ]
do
index='expr $index + 1'
echo $index
shift
done
fi

Gruß
Frank
 
Probier lieber anstatt ' ' bei einemeinen Ausdruck der interpretiert werden soll die anderen Hochkommata. Die, die man auch bei Akzenten setzt: ` ` oder $( )
 
$() wäre die posix konforme variante... in welcher shell arbeitet ihr denn? man sollte darauf achten das man die benutze shell mit angibt, da sich der syntax teilweise deutlich unterscheidet!
 
Probier lieber anstatt ' ' bei einemeinen Ausdruck der interpretiert werden soll die anderen Hochkommata. Die, die man auch bei Akzenten setzt: ` ` oder $( )

Danke für die Antwort, hatte das zähneknirschend dann doch noch rausgefunden.
Beider nächsten Frage schreibe ich dann auch mehr Infos dazu.
Gruß

Frank
 
Code:
 index='expr $index + 1'
 echo $index
Wo ist mein Fehler?
In der Syntax. Du hast mit den einfachen Hochkommata eine literale Zeichenkette als Textvariable definiert. Wenn du das schon so umständlich lösen willst, hättest du die "Backticks" verwenden müssen. Also so:
Code:
index=`expr $index + 1`
Beachte den Unterschied zwischen den Zeichen: ' und `
Das eine führt zur literalen Übernahme einer Zeichenkette als String, das andere führt zur Befehlssubstitution.

Arithmetische Ausdrücke sehen anders aus. Versuch das:
Code:
index=$((index+1))
echo $index
...oder die verkürzte Variante davon für den Alltagsgebrauch...
Code:
((index++))
echo $index