Schleifenvariablenfehler in for-Schleife

10

Wenn ich für wie benutze

 for i in 1 2 3 4 5 

dann enthält meine datei #!/bin/shoben.

Aber wenn ich benutze

for(( i = 0; i<=5; i++))

dann zeigt es Fehler

Syntax error: Bad for loop variable

und richtig laufen, wenn ich Shebang entferne. Bitte teilen Sie mir den Grund dafür mit.

Gaurav Rai
quelle

Antworten:

11

for(( i = 0; i<=5; i++))ist Bash-spezifisch und funktioniert nicht mit der einfachen Bourne-Shell ( /bin/sh).

Wenn Sie den Shebang entfernen, wird das Skript von Ihrer aktuellen Shell (wahrscheinlich Bash) ausgeführt, damit es funktioniert.

Ersetzen Sie #!/bin/shdurch #!/bin/bash, damit der Schebang funktioniert.

Florian Diesch
quelle
Gibt es eine Möglichkeit, dies im shModus zu tun ? Vielen Dank!
Ziyaddin Sadigov
2
i=0; while [ $i -le 5 ]; do echo $i; i=$((i+1)); done
Florian Diesch
1
Ich benutze #bash bereits und funktioniert nicht
BG Bruno
2
for(( i = 0; i<=5; i++))

Für diese Art von Schleife läuft nur auf der Bash-Shell. Wenn Sie dies ausführen möchten, versuchen Sie diesen Befehl:

$bash filename.sh

Ich denke, es wird gut funktionieren. und siehe auch diesen .

Sudip Das
quelle
1

Ich habe dieses Problem mit dem Befehl ./ anstelle des Befehls sh gelöst. Zum Beispiel, wenn Sie sh test.shstattdessen setzen, geben Sie einfach Ihren Befehl als ./test.shUnd höchstwahrscheinlich wird das Problem gelöst.

dilantha111
quelle
0

Probieren Sie dies aus, dies könnte Ihr Problem lösen

#!/bin/bash
j=0
for (( i=1; i <= 5; i++ ))
do
 echo "the loop is runing $i time: and value of j is $j"
 j=`expr $j + 1`
done
smn_onrocks
quelle