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))
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 ?
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.
Partager