• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> 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
 

Frankplanlos

Stechapfel
Registriert
21.04.07
Beiträge
157
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
 

tfc

Ontario
Registriert
21.07.07
Beiträge
348
Probier lieber anstatt ' ' bei einemeinen Ausdruck der interpretiert werden soll die anderen Hochkommata. Die, die man auch bei Akzenten setzt: ` ` oder $( )
 

DukeNuke2

Wagnerapfel
Registriert
17.01.06
Beiträge
1.583
$() 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!
 

Frankplanlos

Stechapfel
Registriert
21.04.07
Beiträge
157
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
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
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