Błąd zmiennej pętli w pętli for

10

Kiedy używam do polubienia

 for i in 1 2 3 4 5 

wtedy mój plik zawiera #!/bin/shu góry.

Ale kiedy używam

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

to pokazuje błąd

Syntax error: Bad for loop variable

i działa poprawnie po usunięciu shebang. Podaj mi powód tego.

Gaurav Rai
źródło

Odpowiedzi:

11

for(( i = 0; i<=5; i++))jest specyficzny dla Bash i nie działa ze zwykłą powłoką Bourne'a ( /bin/sh).

Jeśli usuniesz shebang, skrypt jest uruchamiany przez twoją bieżącą powłokę (prawdopodobnie Bash), więc działa.

Wymień #!/bin/shsię #!/bin/bashaby shebang pracy.

Florian Diesch
źródło
Czy można to zrobić w shtrybie? Dzięki!
Ziyaddin Sadigov
2
i=0; while [ $i -le 5 ]; do echo $i; i=$((i+1)); done
Florian Diesch
1
Używam #bash już i nie działa
BG Bruno
2
for(( i = 0; i<=5; i++))

dla tego typu pętli działa tylko na powłoce Bash. więc jeśli chcesz to uruchomić, wypróbuj to polecenie:

$bash filename.sh

Myślę, że będzie dobrze. i zobacz to również.

Sudip Das
źródło
1

Rozwiązałem ten problem, używając polecenia ./ zamiast sh. Na przykład, jeśli podasz sh test.shzamiast tego, po prostu wydaj polecenie, a ./test.shnajprawdopodobniej problem zostanie rozwiązany.

dilantha111
źródło
0

Wypróbuj to, może to rozwiązać problem

#!/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
źródło