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 !
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 commande
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 let a=1 echo $a
c'est à n'y rien comprendre....
Bonjour,
Dans un cas, tu écris
et dans l'autre
Code : Sélectionner tout - Visualiser dans une fenêtre à part let a=1
Pourquoi cette différence ? As-tu essayé de supprimer ces guillemets ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part let `a=1`
Tu remarqueras que dans ton script, l'instruction let n'a rien à voir avec celle tapée en mode commande
script --> let `nbfic=$nbfic+1`
commande --> let a=1
En shell, l'incrément de compteur se fait comme suit :
ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part ((nbfic++)
Code : Sélectionner tout - Visualiser dans une fenêtre à part ((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é.je vai essayer pour l'incrément.
La permière méthode, (à laquelle il manque aussi une parenthèse fermante) n'est pas portable.
Un syntaxe fonctionnant avec tous les shells compatibles bourne, y compris les plus anciens non POSIX, est:
Code : Sélectionner tout - Visualiser dans une fenêtre à part nbfic=`expr $nbfic + 1`
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 ?
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é ?
Alors change de shell...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $ type let let is a shell builtin
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.
Tu as essayé quoi exactement ?
Peux-tu executer ce petit script et nous dire ce qu'il retourne ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 #!/bin/bash set | grep BASH_VERS let a=2
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 mortdanslame@angenoir:~$ sh test.sh test.sh: 3: let: not found mortdanslame@angenoir:~$
J'ai repris ton script:
lancer par un
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2./test.sh
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager