OVH Cloud OVH Cloud

[Newbie] script bash

4 réponses
Avatar
seb
salut,
je capte rien au bash,
je fais un mini script test.sh qui contient:

#!/bin/bash
for i in 1 2 3
do
echo $i
done

si je fais ./test.sh j'obtiens l'erreur suivante:
bash: ./test.sh: bad interpreter: No such file or directory

si je fais /bin/bash test.sh j'obtiens l'erreur suivante:
'est.sh: line 3: syntax error near unexpected token `do
'est.sh: line 3: `do

A noter que si , dans mon script j'ai:
do echo $i
alors ça passe, mais je ne vais pas tout mettre sur une seule ligne quand
même !

Comment on fait tourner un script bash ? J'ai du rater un truc de base...

seb

4 réponses

Avatar
ericb
Bonjour,


salut,
je capte rien au bash,


Si tu débutes, il y a un forum pour unix :

fr.comp.os.unix

N'hésite pas, il y a des champions toujours prêts à aider...

je fais un mini script test.sh qui contient:

#!/bin/bash
for i in 1 2 3
do
echo $i
done

si je fais ./test.sh j'obtiens l'erreur suivante:
bash: ./test.sh: bad interpreter: No such file or directory



Chez moi, ça passe tout droit...

#!/bin/bash

for i in 1 2 3
do
echo $i
done


donne :

1
2
3


Remarque : pour jouer, remplace "1 2 3" par $(seq 1 5 ) puis $( seq 1
2 11) ... ;-))


A noter que si , dans mon script j'ai:
do echo $i
alors ça passe, mais je ne vais pas tout mettre sur une seule ligne quand
même !


Non, normalement, ça doit passer, le do seul avec saut de ligne équivaut
à "do ;" (do rien du tout) donc, c'est correct.

Comment on fait tourner un script bash ? J'ai du rater un truc de base...


AMHA (mais je peux me tromper) , c'est un caractère non affichable qui
est dans ton texte...

Qu'est-ce que ça donne quand tu édites ce texte dans vi (vi ./test.sh )
? Autrement dit, n'y aurait-t-il pas des caractères supplémentaires,
comme ^M (CTRL-M ) . Cela arrive quand on passe par windows pour
éditer un fichier texte...


--
eric b

Avatar
seb
"ericb" a écrit dans le message de
news:41376cbd$0$8296$
fr.comp.os.unix
N'hésite pas, il y a des champions toujours prêts à aider...


je vais aller voir par là...


Chez moi, ça passe tout droit...

#!/bin/bash

for i in 1 2 3
do
echo $i
done


au cas où:
- je me connecte au serveur en ssh avec putty
- je crée un fichier avec ce bout de code dedans
- et je lance /bin/bash test.sh
- et paf erreur !

d'ailleur ça ne devrait pas marcher tout seul avec seulement ./test.sh ?
parce que dans ce cas là l'interpreteur ne semble meme pas lire le fichier

par contre j'ai remarqué que ça passe si je met:
for i in 1 2 3
do echo $i
done

et ça passe également si directement en ligne de commande je colle (puis
entrée) le code (notez le do sur une seule ligne):
for i in 1 2 3
do
echo $i
done

AMHA (mais je peux me tromper) , c'est un caractère non affichable qui
est dans ton texte...


non plus, ni les permissions, ni les chemins vers sh ou bash...

je sèche total.
seb

Avatar
Licence IV
Le Thu, 2 Sep 2004 20:18:00 +0200, après mûre réflexion,
seb a écrit:
#!/bin/bash
for i in 1 2 3
do
echo $i
done


C'est bon.
Je l'ai refait sur ma machine et ça marche nickel.

si je fais ./test.sh j'obtiens l'erreur suivante:
bash: ./test.sh: bad interpreter: No such file or directory


Hmmm!
la ça voudrait dire que tu as une erreur sur la première ligne (le
#!/bin/bash)
fait un which bash
et un bash --version
histoire d'avoir toutes les donnés.

si je fais /bin/bash test.sh j'obtiens l'erreur suivante:
'est.sh: line 3: syntax error near unexpected token `do
'est.sh: line 3: `do


bizarre!

Fait un
file test.sh
Pour vérifier que tu as bien ça:
test.sh: Bourne-Again shell script text executable
sinon, donnes nous le résultat.

A noter que si , dans mon script j'ai:
do echo $i
alors ça passe, mais je ne vais pas tout mettre sur une seule ligne quand
même !


non, seulement la première commande!

Comment on fait tourner un script bash ? J'ai du rater un truc de base...


Quand tu mets #!/bin/bash en début de ton script, tu n'as pas besoin de
le lancer en faisant /bin/bash test.sh

--
Nicolas de Ferrières Mail:
_______________________________________________________________
Si l'alcool ne me tue pas... Les femmes auront ma peau

Avatar
chimay
hello,

j'ai eu le même problème avec un fichier crée sous windows
(pour cygwin) Surement un pb de fin de ligne. C/C --> autre
fichier et ca devrait fonctionner ;)

seb wrote:
salut,
je capte rien au bash,
je fais un mini script test.sh qui contient:

#!/bin/bash
for i in 1 2 3
do
echo $i
done

si je fais ./test.sh j'obtiens l'erreur suivante:
bash: ./test.sh: bad interpreter: No such file or directory

si je fais /bin/bash test.sh j'obtiens l'erreur suivante:
'est.sh: line 3: syntax error near unexpected token `do
'est.sh: line 3: `do

A noter que si , dans mon script j'ai:
do echo $i
alors ça passe, mais je ne vais pas tout mettre sur une seule ligne quand
même !

Comment on fait tourner un script bash ? J'ai du rater un truc de base...

seb