Comment empeicher le Shell d'attraper une apostrophe contenue dans la var $*
Résolu
BillyV33
-
lEprofSonDkon Messages postés 227 Statut Membre -
lEprofSonDkon Messages postés 227 Statut Membre -
Bonjour, :)
J'ai un script qui est lancé de cette façon :
( $0 $1 $phrase)
./script ajouter <phrase qui contient l'apostrophe>
Mon script fonctionne bien sauf si je le lance avec une phrase qui contient une apostrophe
( ', ` ou ")
le problème et que dès que je fait ENTER sur le clavier j'ai une interaction <... et il attend quelque chose!
comment empêcher ce comportement?
./script ajouter on trouve toujours de l'aide bien instructif dans ce petit coin du monde!
>
>
...
^C
pour terminer!
#en gros je décale de un pour avoir juste la phrase
phrase="$1"
shift
phrase="$*"
#juste une fonction qui valide si fichier où je vais sauvegarde la phrase est bien existant (0) sinon (1)
valider_fich
#si fich n'existe pas il le créer et il ajoute la phrase
if [ "$code_validation" -eq 1 ]; then
echo "$phrase" > ~/fich
fi
mais je n'arrive jamais là ! je reste au >....
Merci beaucoup! :)
J'ai un script qui est lancé de cette façon :
( $0 $1 $phrase)
./script ajouter <phrase qui contient l'apostrophe>
Mon script fonctionne bien sauf si je le lance avec une phrase qui contient une apostrophe
( ', ` ou ")
le problème et que dès que je fait ENTER sur le clavier j'ai une interaction <... et il attend quelque chose!
comment empêcher ce comportement?
./script ajouter on trouve toujours de l'aide bien instructif dans ce petit coin du monde!
>
>
...
^C
pour terminer!
#en gros je décale de un pour avoir juste la phrase
phrase="$1"
shift
phrase="$*"
#juste une fonction qui valide si fichier où je vais sauvegarde la phrase est bien existant (0) sinon (1)
valider_fich
#si fich n'existe pas il le créer et il ajoute la phrase
if [ "$code_validation" -eq 1 ]; then
echo "$phrase" > ~/fich
fi
mais je n'arrive jamais là ! je reste au >....
Merci beaucoup! :)
Configuration: Linux / Firefox 60.0
2 réponses
-
Bonjour,
dans les exemples d'appel, je viens de me rendre compte qu'on a mit des "phase avec l’apostrophe" qui entourent la phrase
dans ce cas tous fonctionne!
Par contre jute par curiosité
... un read ?.. j'ai essayé mais rien ..
il y a une solution pas trop compliquée pour ce genre de cas?
Merci beaucoup -
il faut protéger l'apostrophe; soit en le mettant entre guillemets, soit en le protégeant avec un antislash.
$*
et$@
sont équivalent, mais"$*"
et"$@"
ne le sont pas.
essaie avec une bouclefor
:maFonc() { for i in $*; do echo "$i"; done } maFonc a "b c" densuite, remplace$*
, par$@
,$@
,"$@"
.
tu verras la différence.