Bonjour à tous j'ai un petit soucis, je dois développer des script shell de base pour mes TP en cours mais le shell ne reconnais pas l'instruction let alors que la ligne de commande si....
je ne sais pas quel paquet installer....
please help !
Version imprimable
Bonjour à tous j'ai un petit soucis, je dois développer des script shell de base pour mes TP en cours mais le shell ne reconnais pas l'instruction let alors que la ligne de commande si....
je ne sais pas quel paquet installer....
please help !
Commence par mettre un "#!/bin/bash" ou "#!/bin/ksh" comme première ligne de ton fichier.
déjà fait...
mon script :
et à l'execution il m'affiche "let not found" alors que lorsque je tape successivement sur la ligne de commandeCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 #!/bin/sh nbrep=0 nbfic=0 for i in `ls` do if [ -f $1 ] then let `nbfic=$nbfic+1` else if [ -d $1 ] then let `nbrep=$nbrep+1` fi fi done echo $nbfic echo $nbrep
il m'affiche bien 1Code:
1
2
3 let a=1 echo $a
c'est à n'y rien comprendre....
Bonjour,
Dans un cas, tu écris
et dans l'autreCode:let a=1
Pourquoi cette différence ? As-tu essayé de supprimer ces guillemets ?Code:let `a=1`
Tu remarqueras que dans ton script, l'instruction let n'a rien à voir avec celle tapée en mode commande :aie:
script --> let `nbfic=$nbfic+1`
commande --> let a=1
En shell, l'incrément de compteur se fait comme suit :
ouCode:((nbfic++)
Code:((nbfic=nbfic+1))
je suis sous Ubuntu.
je vai essayer pour l'incrément.
Ceci explique l'erreur que tu obtiens. Sous les Ubuntu récentes, /bin/sh ne pointe pas vers bash mais dash.
Ceci a mis en évidence quantité de bugs dans des scripts qui assument à tort que bash et sh sont synonymes.
Si tu veux mon avis, mais il n'a pas l'air de beaucoup t'interesser, laisse tomber cette piste et tiens compte de la solution que j'ai indiqué.Citation:
je vai essayer pour l'incrément.
et comment je fait pour faire pointer /bin/sh vers bash ?
Techniquement c'est très simple, mais tu n'as "pas le droit" de le faire puisque c'est un choix de ta distribution. De plus, tu dégraderais légèrement les performances de ta machine.
Puisque tu écrit un script bash, pourquoi t'obstines-tu à ne pas l'indiquer à ton O/S ?
et comment faire ce prodige ?
bah j'ai lu mais je n'avai pas fait le rapport entre ces deux trucs là c'est tout...
j'ai essayé mais rien ne se passe c'est toujours la meme chose il me met sur la ligne de commande
"let not found"
peut etre ais-je un paquet qui n'est pas installé ?
je crois que je vai tout simplement changer de distribution,
quelle distribution linux est la meilleur pour la prog ?
j'hésite enre debian, suze ou la petite zenwalk qui vient de sortir...
d'après vous ?
Toute les distri se valent. Y en pas une qui est mieux pour developper qu'une autre. Surtout pour faire des script shell, vi est sur toutes :).
j'ai codé le script que tu m'a donné et voila ce que ca donne à l'execution :
donc voila ca ne marche toujours pas...Code:
1
2
3
4 mortdanslame@angenoir:~$ sh test.sh test.sh: 3: let: not found mortdanslame@angenoir:~$
J'ai repris ton script:
lancer par unCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 #!/bin/bash nbrep=0 nbfic=0 for i in `ls` do if [ -f $1 ] then let nbfic=$nbfic+1 else if [ -d $1 ] then let nbrep=$nbrep+1 fi fi done echo $nbfic echo $nbrep
Et ca marche. Donc je sais pas comment tu fais...Code:
1
2./test.sh