Errore variabile loop in per loop


10

Quando sto usando come

 for i in 1 2 3 4 5 

quindi il mio file contiene #!/bin/shin alto.

Ma quando lo sto usando

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

quindi mostra errore

Syntax error: Bad for loop variable

e correndo correttamente quando rimuovo shebang. Per favore, dimmi il motivo dietro questo.

Risposte:


11

for(( i = 0; i<=5; i++))è specifico di Bash e non funziona con la semplice shell Bourne ( /bin/sh).

Se rimuovi lo shebang, lo script viene eseguito dalla shell corrente (che probabilmente è Bash), quindi funziona.

Sostituisci #!/bin/shcon #!/bin/bashper far funzionare lo shebang.


C'è un modo per farlo in shmodalità? Grazie!
Ziyaddin Sadigov,

2
i=0; while [ $i -le 5 ]; do echo $i; i=$((i+1)); done
Florian Diesch,

1
Uso già #bash e non funziona
BG Bruno il

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

per questo tipo di loop gira solo su shell Bash. quindi, se si desidera eseguire questo, quindi provare questo comando:

$bash filename.sh

Penso che funzionerà bene. e vedi anche questo .


1

Ho risolto questo problema usando ./ invece del comando sh. Ad esempio, se metti sh test.shinvece fai semplicemente il tuo comando come ./test.shE molto probabilmente il problema sarà risolto.


0

Prova questo potrebbe essere questo potrebbe risolvere il tuo problema

#!/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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.