Problême Bash

Résolu/Fermé
Bibifoot71 Messages postés 95 Date d'inscription vendredi 23 mai 2014 Statut Membre Dernière intervention 4 mars 2015 - 13 juil. 2014 à 08:06
Bibifoot71 Messages postés 95 Date d'inscription vendredi 23 mai 2014 Statut Membre Dernière intervention 4 mars 2015 - 13 juil. 2014 à 20:13
Bonjour à tous et désolé si je me suis tromper de topic !
Bon j'explique mon problême, je fais un rpg textuel si on veut mais j'ai un problême justement avec le script car j'essais de faire un "launcher" et donc voila:
echo "[premier, deuxieme]"
echo "Quel chapitre choisir ? "
read choix
case $choix in
*)	echo "vous avez choisis $choix"
	;;
esac


if $name = "premier "
then 
	cat/home/[mon_nom_^^]/Bureau/0.2.2/chapitre1.sh
	#ou je penser a un cd /home... et sh ch1.sh

if $name = "deuxieme"

voila et je n'arrive pas à faire le "if [...] = ouvre mon bidul"
donc je ne sais pas si vous m'avez compris car il est tard (pour moi vu que je n'ai pas dormi lol) et merci pour ce qui vont m'aider car je ne trouve pas de réponse sur internet
Bibifoot

5 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
13 juil. 2014 à 09:23
Salut,

Tiens, je te laisse jeter un oeil à cette doc sur les tests, ainsi que sur les comparaisons de chaînes de caractères, notamment les
if...then...else...fi
ou encore les
if...then...elif...then...else...fi
et compagnie.

Par contre pour ton exemple, il serait peut-être plus judicieux de faire ça dans ton
case...esac
directement, non ?

case "${choix}" in
premier)	/home/${USER}/Bureau/0.2.2/chapitre1.sh
	;;
deuxieme)	/home/${USER}/Bureau/0.2.2/chapitre2.sh
	;;
*)	echo "Mauvaise réponse."
        exit
	;;
esac


;-))
1
Bibifoot71 Messages postés 95 Date d'inscription vendredi 23 mai 2014 Statut Membre Dernière intervention 4 mars 2015 2
13 juil. 2014 à 17:12
Ok merci beaucoup je test ça et je te dirais ^^
0
Bibifoot71 Messages postés 95 Date d'inscription vendredi 23 mai 2014 Statut Membre Dernière intervention 4 mars 2015 2
Modifié par Bibifoot71 le 13/07/2014 à 17:45
Alors je l'ai réadapter et ça donne ça
victor@victor-Inspiron-N7010:~$ cd /home/victor/Bureau/0.2.2
victor@victor-Inspiron-N7010:~/Bureau/0.2.2$ sh launcher1.1.sh 
[premier, deuxieme]
Quel chapitre choisir ? 
: not found.sh: 3: launcher1.1.sh: 
launcher1.1.sh: 5: launcher1.1.sh: Syntax error: word unexpected (expecting "in")
victor@victor-Inspiron-N7010:~/Bureau/0.2.2$ 

donc j'ai tester read choix avant le case $choix et ça à donner ceci:
victor@victor-Inspiron-N7010:~$ cd /home/victor/Bureau/0.2.2 
victor@victor-Inspiron-N7010:~/Bureau/0.2.2$ sh launcher1.1.sh 
[premier, deuxieme]
Quel chapitre choisir ? 
: not found.sh: 3: launcher1.1.sh: 
premier
: bad variable nameread: choix
launcher1.1.sh: 5: launcher1.1.sh: Syntax error: word unexpected (expecting "in")
victor@victor-Inspiron-N7010:~/Bureau/0.2.2$ 

donc autant dire que ça n'a rien fait ^^ (dans le premier post la dernière variable était name c'est moi qui me suis tromper c'était bien choix désolé)
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
13 juil. 2014 à 17:44
On peut voir ton code en entier s'il te plaît ?
0
Bibifoot71 Messages postés 95 Date d'inscription vendredi 23 mai 2014 Statut Membre Dernière intervention 4 mars 2015 2
Modifié par Bibifoot71 le 13/07/2014 à 18:26
Voici le code en entier:
#!/bin/bash
echo "[premier, deuxieme]"
echo "Quel chapitre choisir ? "

read choix
case ${choix} in
premier) /home/${USER}/Bureau/0.2.2/C1.sh
 ;;
deuxieme) /home/${USER}/Bureau/0.2.2/C2.sh
 ;;
*) echo "Le chapitre n'éxiste pas !"
        exit
 ;;
esac
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
13 juil. 2014 à 17:59
Euh... je viens de tester chez moi et le script marche très bien ;-\

Le
${USER}
est censé TE représenter et donc les 2 scripts à lancer doivent se trouver dans ton espace personnel (/home/TOI/Bureau/0.2.2/), c'est bien le cas ?

Les 2 scripts sont bien exécutables (
chmod +x
) ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bibifoot71 Messages postés 95 Date d'inscription vendredi 23 mai 2014 Statut Membre Dernière intervention 4 mars 2015 2
Modifié par Bibifoot71 le 13/07/2014 à 18:31
Alors j'ai même renommer dans le script le ${USER} par mon nom pour voir si ca changer quelque chose mais non (l'espoir fait virvre :D) et oui c'est le bon répertoire et oui j'ai autoriser l'éxecution des deux scripts et voici ce qu'ils me mettent dans le terminal quand je le lance:
Quel chapitre choisir ? 
: not found.sh: 4: launcher1.1.sh:
[j'ai rentré ceci: premier]
: bad variable nameread: choix
launcher1.1.sh: 6: launcher1.1.sh: Syntax error: word unexpected (expecting "in")
(Ps. je viens de remarquer que le
 : bad variable nameread: [La variable en question]
le fait sur d'autres scripts que j'ai fait donc bah si ça peut aider je ne sais pas ^^)
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
13 juil. 2014 à 18:31
Il y a quelque chose qui cloche dans tes messages d'erreurs ;-(
Les numéros de lignes ne correspondent pas au script posté plus haut ;-\

Quel système d'exploitation utilises-tu ?
Quel shell ?
Les scripts sont fait avec quel éditeur ?

Avec le même script chez moi tout roule :

$ ./foo.sh 
[premier, deuxieme]
Quel chapitre choisir ?
premier
Vous avez lancé le script C1.sh

$ ./foo.sh
[premier, deuxieme]
Quel chapitre choisir ?
deuxieme
Vous avez lancé le script C2.sh

Avec les scripts suivants :
cat foo.sh
#/bin/bash
echo "[premier, deuxieme]"
echo "Quel chapitre choisir ? "

read choix
case ${choix} in
premier)	/home/${USER}/trash/C1.sh
	;;
deuxieme)	/home/${USER}/trash/C2.sh
	;;
*)	echo "Mauvaise réponse."
        exit
	;;
esac


cat C1.sh
#/bin/bash
echo "Vous avez lancé le script C1.sh"



cat C2.sh
#/bin/bash
echo "Vous avez lancé le script C2.sh"
0
Bibifoot71 Messages postés 95 Date d'inscription vendredi 23 mai 2014 Statut Membre Dernière intervention 4 mars 2015 2
Modifié par Bibifoot71 le 13/07/2014 à 18:40
Alors j'utilise Ubuntu 14.04 LTS, en Shell j'utilise le Bash, bah comme un gros blaireau j'utilise Gedit mais de base quand je fais du Python j'utilise Geany mais ça ne marchais pas quand je faisait du shell et oui j'ai exactement la même chose que toi en script mais ça ne marche pas :'(
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
13 juil. 2014 à 18:42
Rajoute
set -xv
après le shebang, lance le script et rapporte ici la sortie complète.

#/bin/bash
set -xv
echo "[premier, deuxieme]"
echo "Quel chapitre choisir ? "
[...]
0
Bibifoot71 Messages postés 95 Date d'inscription vendredi 23 mai 2014 Statut Membre Dernière intervention 4 mars 2015 2
13 juil. 2014 à 18:47
Quand je fais ton truc ça me mets
launcher1.1.sh: 2: set: Illegal option -
mais surtout j'ai regardé nous avons EXACTEMENT le même script à la majuscule près et j'ai "Ctr-C/Ctrl-V" ton fichier et ça marche --'
0
Bibifoot71 Messages postés 95 Date d'inscription vendredi 23 mai 2014 Statut Membre Dernière intervention 4 mars 2015 2
13 juil. 2014 à 18:50
Petite comparaison, le tiens:
#/bin/bash
echo "[premier, deuxieme]"
echo "Quel chapitre choisir ? "

read choix
case ${choix} in
premier)	/home/${USER}/trash/C1.sh
	;;
deuxieme)	/home/${USER}/trash/C2.sh
	;;
*)	echo "Mauvaise réponse."
        exit
	;;
esac

Le miens:
#!/bin/bash
echo "[premier, deuxieme]"
echo "Quel chapitre choisir ? "

read choix
case ${choix} in
premier)	/home/victor/Bureau/0.2.2/C1.sh
	;;
deuxieme)	/home/victor/Bureau/0.2.2/C2.sh
	;;
*)	echo "Ce chapitre n'éxiste pas..."
        exit
	;;
esac
0