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.

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.


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.


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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.