Erreur de variable de boucle dans la boucle

10

Quand j'utilise comme

 for i in 1 2 3 4 5 

alors mon fichier contient #!/bin/shen haut.

Mais quand j'utilise

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

alors il montre une erreur

Syntax error: Bad for loop variable

et fonctionne correctement lorsque j'enlève le shebang. Veuillez me dire la raison derrière cela.

Gaurav Rai
la source

Réponses:

11

for(( i = 0; i<=5; i++))est spécifique à Bash et ne fonctionne pas avec le shell Bourne simple ( /bin/sh).

Si vous supprimez le shebang, le script est exécuté par votre shell actuel (qui est probablement Bash) pour que cela fonctionne.

Remplacez #!/bin/shpar #!/bin/bashpour faire fonctionner le shebang.

Florian Diesch
la source
Existe-t-il un moyen de le faire en shmode? Merci!
Ziyaddin Sadigov
2
i=0; while [ $i -le 5 ]; do echo $i; i=$((i+1)); done
Florian Diesch
1
J'utilise déjà #bash et ne fonctionne pas
BG Bruno
2
for(( i = 0; i<=5; i++))

pour ce type de boucle ne fonctionne que sur le shell Bash. donc, si vous voulez l'exécuter, essayez cette commande:

$bash filename.sh

Je pense que cela fonctionnera bien. et voir celui-ci aussi.

Sudip Das
la source
1

J'ai résolu ce problème en utilisant ./ au lieu de la commande sh. Par exemple, si vous mettez à la sh test.shplace, faites simplement votre commande comme ./test.shEt le problème sera probablement résolu.

dilantha111
la source
0

Essayez ceci, cela pourrait résoudre votre problème

#!/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
la source