• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> 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