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.

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.


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ż.


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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.