/ / While boucle dans un script shell ne fonctionnant pas dans le shell bash de linux - linux, shell, csh

While boucle dans le script shell ne fonctionne pas dans le shell linux bash - linux, shell, csh

Suis un peu novice dans l'écriture de scripts shell sous Linux. C'est un csh script mais je l'exécute dans le bash shell que j'ai utilisé #!/bin/bash au lieu de #!/bin/csh.

  1 #!/bin/bash
2 set i = 1
3 echo it starts
4
5 while ($i <= 5)
6         echo i is $i
7         @ i= $i +1
8 end

** Remarque: ** Les chiffres servent uniquement à numéroter les lignes.

Le code ci-dessus me donne la sortie avec erreur:

it starts
./me.csh: line 9: syntax error: unexpected end of file

Je ne peux pas comprendre ce qui ne va pas même si ça fait écho it starts et il n'y a pas de ligne numéro 9 comme spécifié dans l'erreur.

Réponses:

2 pour la réponse № 1

Le shebang doit être défini sur le shell qui doit interpréter le script. Le shell dans lequel vous exécutez le script importe peu. La seule chose qui compte est le langage dans lequel le script est écrit.

Votre script est écrit en csh, et doit donc avoir le shebang #!/bin/csh. Cela est vrai même si vous voulez l'exécuter à partir de bash. En outre, il vous manquait un espace dans votre signature:

$ cat me.csh
#!/bin/csh
set i = 1
echo it starts

while ($i <= 5)
echo i is $i
@ i = $i + 1
end

Sortie:

$ ./me.csh
it starts
i is 1
i is 2
i is 3
i is 4
i is 5

0 pour la réponse № 2

Essaye ça:

#!/bin/bash
echo it starts

i=1
while [ $i -le 5 ]; do
echo i is $i
i=$(( i+1 ))
done

Sortie de l'échantillon:

it starts
i is 1
i is 2
i is 3
i is 4
i is 5

Voici une excellente référence:

Programmation BASH - Introduction HOW-TO