[SHELL] Erreur de syntaxe
Fermé
santiago69
Messages postés
477
Date d'inscription
mercredi 7 mars 2001
Statut
Membre
Dernière intervention
12 septembre 2016
-
6 juin 2008 à 13:02
santiago69 Messages postés 477 Date d'inscription mercredi 7 mars 2001 Statut Membre Dernière intervention 12 septembre 2016 - 6 juin 2008 à 15:23
santiago69 Messages postés 477 Date d'inscription mercredi 7 mars 2001 Statut Membre Dernière intervention 12 septembre 2016 - 6 juin 2008 à 15:23
A voir également:
- [SHELL] Erreur de syntaxe
- Erreur 0x80070643 - Accueil - Windows
- Classic shell windows 11 - Télécharger - Personnalisation
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Erreur 1001 outlook - Accueil - Bureautique
- Erreur de lecture reconnecté en 3s - Forum TV & Vidéo
12 réponses
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
6 juin 2008 à 13:25
6 juin 2008 à 13:25
Salut,
Ben chez moi ça marche bien :
Ben chez moi ça marche bien :
[tmpfs]$ cat santiago.sh #!/bin/bash syntax=$(basename "$0")' must be run as root\n' [ $UID -ne 0 ] && (echo -e "$syntax"; exit 2) [tmpfs]$ ./santiago.sh santiago.sh must be run as root [tmpfs]$ echo $? 2 [tmpfs]$Bizarre ;-\
santiago69
Messages postés
477
Date d'inscription
mercredi 7 mars 2001
Statut
Membre
Dernière intervention
12 septembre 2016
209
6 juin 2008 à 13:29
6 juin 2008 à 13:29
Incroyable !!!
Regarde ce que ca donne chez moi :
Regarde ce que ca donne chez moi :
$ cat /usr/local/bin/groupadduser #!/bin/bash syntax=$(basename "$0")' must be run as root\n' [ $UID -ne 0 ] && (echo -e "$syntax"; exit 1) echo "Je veux pas voir cette ligne" $ /usr/local/bin/groupadduser groupadduser must be run as root Je veux pas voir cette ligne $ echo $? 0
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
6 juin 2008 à 13:53
6 juin 2008 à 13:53
Euh...non ! Là c'est normal le "0" dans la mesure où c'est le code retour de la dernière commande qui est retournée dans la variable "$?".
[tmpfs]$ cat santiago.sh #!/bin/bash syntax=$(basename "$0")' must be run as root\n' [ $UID -ne 0 ] && (echo -e "$syntax"; exit 2) echo $? echo "c'est cool" echo $? [tmpfs]$ ./santiago.sh santiago.sh must be run as root 2 c'est cool 0 [tmpfs]$;-))
santiago69
Messages postés
477
Date d'inscription
mercredi 7 mars 2001
Statut
Membre
Dernière intervention
12 septembre 2016
209
6 juin 2008 à 13:56
6 juin 2008 à 13:56
Encore plus incroyable !
Il execute bien la commande exit (puisque $? contient 2)
mais continu malgre tout.
C'est a devenir fou !
Il execute bien la commande exit (puisque $? contient 2)
mais continu malgre tout.
C'est a devenir fou !
$ cat /usr/local/bin/groupadduser #!/bin/bash syntax=$(basename "$0")' must be run as root\n' [ $UID -ne 0 ] && (echo -e "$syntax"; exit 2) echo $? echo "Je veux pas voir cette ligne" echo $? $ /usr/local/bin/groupadduser groupadduser must be run as root 2 Je veux pas voir cette ligne 0
santiago69
Messages postés
477
Date d'inscription
mercredi 7 mars 2001
Statut
Membre
Dernière intervention
12 septembre 2016
209
6 juin 2008 à 14:06
6 juin 2008 à 14:06
Pour info, j'ai affiche le resultat du script execute en temps que root.
$ cat /usr/local/bin/groupadduser #!/bin/bash syntax=$(basename "$0")' must be run as root\n' [ $UID -ne 0 ] && (echo -e "$syntax"; exit 2) echo $? echo "Je veux pas voir cette ligne" echo $? $ /usr/local/bin/groupadduser groupadduser must be run as root 2 Je veux pas voir cette ligne 0 $ sudo /usr/local/bin/groupadduser 1 Je veux pas voir cette ligne 0
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
6 juin 2008 à 14:31
6 juin 2008 à 14:31
Je n'avais pas compris que tu voulais quitter le script immédiatement, je croyais juste que tu voulais gérer le code retour ;-[
Bon alors pour faire ce que tu veux, il suffit juste d'enlever les parenthèses, en fait les parenthèses créent un shell fils et de ce fait la commande "exit" affecte le "fils" et non le shell père.
Donc modifie le script tel quel :
Bon alors pour faire ce que tu veux, il suffit juste d'enlever les parenthèses, en fait les parenthèses créent un shell fils et de ce fait la commande "exit" affecte le "fils" et non le shell père.
Donc modifie le script tel quel :
#!/bin/bash syntax=$(basename "$0")' must be run as root\n' [ $UID -ne 0 ] && echo -e "$syntax"; exit 2 echo $? echo "c'est cool" echo $?et ça devrait le faire...
santiago69
Messages postés
477
Date d'inscription
mercredi 7 mars 2001
Statut
Membre
Dernière intervention
12 septembre 2016
209
6 juin 2008 à 14:38
6 juin 2008 à 14:38
Ben non, justement j'ai ajoute les parentheses a cause de ca :
Autrement dit, il exit dans tous les cas.
C'est pas possible, on doit pas avoir le meme shell 8-|
santiago@ks354286:~$ cat /usr/local/bin/groupadduser #!/bin/bash syntax=$(basename "$0")' must be run as root\n' [ $UID -ne 0 ] && echo -e "$syntax"; exit 2 echo $? echo "Je veux pas voir cette ligne" echo $? santiago@ks354286:~$ /usr/local/bin/groupadduser groupadduser must be run as root santiago@ks354286:~$ echo $? 2 santiago@ks354286:~$ sudo /usr/local/bin/groupadduser santiago@ks354286:~$ echo $? 2
Autrement dit, il exit dans tous les cas.
C'est pas possible, on doit pas avoir le meme shell 8-|
santiago69
Messages postés
477
Date d'inscription
mercredi 7 mars 2001
Statut
Membre
Dernière intervention
12 septembre 2016
209
6 juin 2008 à 14:44
6 juin 2008 à 14:44
Ce que je veux c'est :
Si on est root, on continu le script
Si on est pas root, on affiche l'erreur (must be root) et on sort sans continuer.
Si on est root, on continu le script
Si on est pas root, on affiche l'erreur (must be root) et on sort sans continuer.
santiago69
Messages postés
477
Date d'inscription
mercredi 7 mars 2001
Statut
Membre
Dernière intervention
12 septembre 2016
209
6 juin 2008 à 14:48
6 juin 2008 à 14:48
En syntaxe non reduite, je cherche a ecrire ca.
Je pourrais garder cette syntaxe bien sur, mais j'aimerais bien comprendre ce qu'il se passe avec l'autre syntaxe.
#!/bin/bash syntax=$(basename "$0")' must be run as root\n' if [\[ $UID -ne 0 ]\]; then echo -e "$syntax" exit 1 fi echo "Vous etes root"
Je pourrais garder cette syntaxe bien sur, mais j'aimerais bien comprendre ce qu'il se passe avec l'autre syntaxe.
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
6 juin 2008 à 14:50
6 juin 2008 à 14:50
Essaye comme ça alors :
#!/bin/bash syntax=$(basename "$0")' must be run as root\n' if [ $UID -ne 0 ] then echo -e "$syntax" exit 2 fi echo $? echo "c'est cool" echo $?;-))
santiago69
Messages postés
477
Date d'inscription
mercredi 7 mars 2001
Statut
Membre
Dernière intervention
12 septembre 2016
209
6 juin 2008 à 14:52
6 juin 2008 à 14:52
Ouais c'est ce que j'ai fini par faire mais bon c'est etrange quand meme.
Merci
Merci
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
6 juin 2008 à 15:13
6 juin 2008 à 15:13
Et comme ça :
#!/bin/bash syntax=$(basename "$0")' must be run as root\n' [ $UID -ne 0 ] && echo -e "$syntax" && exit 2 echo $? echo "c'est cool" echo $?ça le fait pas ?
santiago69
Messages postés
477
Date d'inscription
mercredi 7 mars 2001
Statut
Membre
Dernière intervention
12 septembre 2016
209
6 juin 2008 à 15:23
6 juin 2008 à 15:23
Ah ouais pas con, ca marche effectivement.
Merci
Merci