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
A voir également:
- Comment empeicher le Shell d'attraper une apostrophe contenue dans la var $*
- Classic shell - Télécharger - Personnalisation
- Apostrophe inversée ✓ - Forum MacOS
- Classic shell c'est quoi ✓ - Forum Windows 10
- Shell addition ✓ - Forum Shell
- Le fichier à télécharger correspond au contenu brut d’un courrier électronique. de quel pays a été envoyé ce message ? - Guide
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
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.
essaie avec une boucle
tu verras la différence.
$*et
$@sont équivalent, mais
"$*"et
"$@"ne le sont pas.
essaie avec une boucle
for:
maFonc()
{
for i in $*; do echo "$i"; done
}
maFonc a "b c" densuite, remplace $*, par
$@,
$@,
"$@".
tu verras la différence.