Problême Bash
RésoluBon 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
Un launcher bash propose les choix [premier, deuxieme], lit le choix puis tente d'exécuter C1.sh ou C2.sh, mais des erreurs de syntaxe et des messages 'not found' surviennent. Des réponses suggèrent d'utiliser directement 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'existe pas' ;; esac et d'appeler les scripts selon le choix. Certains conseils montrent un exemple fonctionnel utilisant un shebang, un choix via case et des chemins explicites, et évitent les erreurs liées au positionnement des commandes et aux retours chariot. En pratique, une version complète montre le code exact utilisant case ${choix} avec premier et deuxieme liés respectivement à C1.sh et C2.sh, et des messages d'erreur configurables pour les choix invalides.
-
ContributeurSalut,
Tiens, je te laisse jeter un oeil à cette doc sur les tests, ainsi que sur les comparaisons de chaînes de caractères, notamment lesif...then...else...fi
ou encore lesif...then...elif...then...else...fi
et compagnie.
Par contre pour ton exemple, il serait peut-être plus judicieux de faire ça dans toncase...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
;-))
-
Ok merci beaucoup je test ça et je te dirais ^^
-
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é) -
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 -
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 ?
(Ps. je viens de remarquer que le
: 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"): 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 ^^)-
ContributeurIl 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"
-
-
-
-
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
-