Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/10/2007, 20h02   #1
Membre du Club
 
Inscription : avril 2007
Messages : 183
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : avril 2007
Messages : 183
Points : 61
Points : 61
Envoyer un message via MSN à MortDansLAme Envoyer un message via Skype™ à MortDansLAme
Par défaut script shell ne reconnais pas let

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 !
MortDansLAme est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/10/2007, 08h39   #2
Membre Expert
 
Avatar de jlliagre
 
Inscription : juin 2007
Messages : 969
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2007
Messages : 969
Points : 1 376
Points : 1 376
Commence par mettre un "#!/bin/bash" ou "#!/bin/ksh" comme première ligne de ton fichier.
jlliagre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/10/2007, 11h30   #3
Membre du Club
 
Inscription : avril 2007
Messages : 183
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : avril 2007
Messages : 183
Points : 61
Points : 61
Envoyer un message via MSN à MortDansLAme Envoyer un message via Skype™ à MortDansLAme
déjà fait...

mon script :

Code :
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
et à l'execution il m'affiche "let not found" alors que lorsque je tape successivement sur la ligne de commande
il m'affiche bien 1

c'est à n'y rien comprendre....
MortDansLAme est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/10/2007, 15h18   #4
Modérateur
 
Avatar de gangsoleil
 
R&D en systemes informatiques bas niveau Unix/Linux
Inscription : mai 2004
Messages : 5 499
Détails du profil
Informations personnelles :
Âge : 31
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : R&D en systemes informatiques bas niveau Unix/Linux

Informations forums :
Inscription : mai 2004
Messages : 5 499
Points : 9 679
Points : 9 679
Bonjour,

Dans un cas, tu écris

et dans l'autre

Pourquoi cette différence ? As-tu essayé de supprimer ces guillemets ?
__________________
Modérateur "C", "Informatique Générale & Hardware" et "Unix"
Les règles du forum
gangsoleil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/10/2007, 22h23   #5
Membre expérimenté
 
Avatar de BlaireauOne
 
Inscription : mars 2007
Messages : 469
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mars 2007
Messages : 469
Points : 576
Points : 576
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

__________________
Loi de Murphy:
La Théorie c'est quand ça ne marche pas mais que l'on sait pourquoi.
La Pratique c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique ça ne marche pas et on ne sait pas pourquoi.
BlaireauOne est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2007, 00h40   #6
Membre Expert
 
Avatar de jlliagre
 
Inscription : juin 2007
Messages : 969
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2007
Messages : 969
Points : 1 376
Points : 1 376
Citation:
Envoyé par MortDansLAme Voir le message
déjà fait...
Ben non, c'est pas déjà fait. Je t'ai suggèré de dire à ton O/S que ton script est du ksh ou du bash mais tu met que c'est du sh:

Essaie ce que je t'ai suggéré, et dis nous aussi sur quel O/S tu es.
jlliagre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2007, 09h23   #7
Membre du Club
 
Inscription : avril 2007
Messages : 183
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : avril 2007
Messages : 183
Points : 61
Points : 61
Envoyer un message via MSN à MortDansLAme Envoyer un message via Skype™ à MortDansLAme
je suis sous Ubuntu.

je vai essayer pour l'incrément.
MortDansLAme est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2007, 09h45   #8
Membre Expert
 
Avatar de jlliagre
 
Inscription : juin 2007
Messages : 969
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2007
Messages : 969
Points : 1 376
Points : 1 376
Citation:
Envoyé par MortDansLAme Voir le message
je suis sous Ubuntu.
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.
Citation:
je vai essayer pour l'incrément.
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é.
jlliagre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2007, 10h26   #9
Membre Expert
 
Avatar de jlliagre
 
Inscription : juin 2007
Messages : 969
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2007
Messages : 969
Points : 1 376
Points : 1 376
Citation:
Envoyé par BlaireauOne Voir le message
En shell, l'incrément de compteur se fait comme suit :

ou

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 :
nbfic=`expr $nbfic + 1`
jlliagre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/10/2007, 13h37   #10
Membre du Club
 
Inscription : avril 2007
Messages : 183
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : avril 2007
Messages : 183
Points : 61
Points : 61
Envoyer un message via MSN à MortDansLAme Envoyer un message via Skype™ à MortDansLAme
et comment je fait pour faire pointer /bin/sh vers bash ?
MortDansLAme est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2007, 01h34   #11
Membre Expert
 
Avatar de jlliagre
 
Inscription : juin 2007
Messages : 969
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2007
Messages : 969
Points : 1 376
Points : 1 376
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 ?
jlliagre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2007, 10h25   #12
Membre du Club
 
Inscription : avril 2007
Messages : 183
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : avril 2007
Messages : 183
Points : 61
Points : 61
Envoyer un message via MSN à MortDansLAme Envoyer un message via Skype™ à MortDansLAme
et comment faire ce prodige ?
MortDansLAme est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2007, 15h53   #13
Membre émérite
 
Avatar de Pouic
 
Inscription : octobre 2004
Messages : 668
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2004
Messages : 668
Points : 904
Points : 904
Citation:
Envoyé par MortDansLAme Voir le message
et comment faire ce prodige ?
Citation:
Envoyé par jlliagre
Commence par mettre un "#!/bin/bash" ou "#!/bin/ksh" comme première ligne de ton fichier.
A quoi ça sert qu'on se décarcasse si tu ne lis pas les réponses et restes obstiné ?
__________________
Software becomes slower faster than hardware becomes faster

http://xrenault.developpez.com
API C standard (C ANSI )
Pouic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2007, 11h25   #14
Membre du Club
 
Inscription : avril 2007
Messages : 183
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : avril 2007
Messages : 183
Points : 61
Points : 61
Envoyer un message via MSN à MortDansLAme Envoyer un message via Skype™ à MortDansLAme
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é ?
MortDansLAme est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2007, 15h17   #15
LLB
Membre Expert
 
Inscription : mars 2002
Messages : 946
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 946
Points : 1 085
Points : 1 085
Citation:
Envoyé par MortDansLAme Voir le message
bah j'ai lu mais je n'avai pas fait le rapport entre ces deux trucs là c'est tout...
Code :
1
2
$ type let
let is a shell builtin
Citation:
Envoyé par MortDansLAme Voir le message
j'ai essayé mais rien ne se passe c'est toujours la meme chose il me met sur la ligne de commande
Alors change de shell...
LLB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2007, 16h21   #16
Membre du Club
 
Inscription : avril 2007
Messages : 183
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : avril 2007
Messages : 183
Points : 61
Points : 61
Envoyer un message via MSN à MortDansLAme Envoyer un message via Skype™ à MortDansLAme
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 ?
MortDansLAme est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2007, 21h21   #17
Membre actif
 
Avatar de Blo0d4x3
 
Inscription : octobre 2003
Messages : 456
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 456
Points : 152
Points : 152
Envoyer un message via AIM à Blo0d4x3 Envoyer un message via MSN à Blo0d4x3
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 .
Blo0d4x3 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2007, 03h11   #18
Membre Expert
 
Avatar de jlliagre
 
Inscription : juin 2007
Messages : 969
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2007
Messages : 969
Points : 1 376
Points : 1 376
Citation:
Envoyé par MortDansLAme Voir le message
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"
Tu as essayé quoi exactement ?

Peux-tu executer ce petit script et nous dire ce qu'il retourne ?
Code :
1
2
3
4
 
#!/bin/bash
set | grep BASH_VERS
let a=2
jlliagre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2007, 17h30   #19
Membre du Club
 
Inscription : avril 2007
Messages : 183
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : avril 2007
Messages : 183
Points : 61
Points : 61
Envoyer un message via MSN à MortDansLAme Envoyer un message via Skype™ à MortDansLAme
j'ai codé le script que tu m'a donné et voila ce que ca donne à l'execution :

Code :
1
2
3
4
 
mortdanslame@angenoir:~$ sh test.sh
test.sh: 3: let: not found
mortdanslame@angenoir:~$
donc voila ca ne marche toujours pas...
MortDansLAme est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2007, 19h31   #20
Membre actif
 
Avatar de Blo0d4x3
 
Inscription : octobre 2003
Messages : 456
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 456
Points : 152
Points : 152
Envoyer un message via AIM à Blo0d4x3 Envoyer un message via MSN à Blo0d4x3
J'ai repris ton script:
Code :
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
lancer par un

Et ca marche. Donc je sais pas comment tu fais...
Blo0d4x3 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h57.


 
 
 
 
Partenaires

Hébergement Web