Comment empeicher le Shell d'attraper une apostrophe contenue dans la var $*

Résolu/Fermé
BillyV33 - 19 avril 2019 à 03:21
lEprofSonDkon Messages postés 211 Date d'inscription jeudi 13 décembre 2018 Statut Membre Dernière intervention 8 octobre 2022 - 20 avril 2019 à 13:15
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! :)

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
0
lEprofSonDkon Messages postés 211 Date d'inscription jeudi 13 décembre 2018 Statut Membre Dernière intervention 8 octobre 2022 13
20 avril 2019 à 12:05
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 boucle
for
:
maFonc()
{
   for i in $*; do echo "$i"; done
}
maFonc a "b c" d
ensuite, remplace
$*
, par
$@
,
$@
,
"$@"
.

tu verras la différence.
0
lEprofSonDkon Messages postés 211 Date d'inscription jeudi 13 décembre 2018 Statut Membre Dernière intervention 8 octobre 2022 13
20 avril 2019 à 13:15
UNE apostrophe -> "en la mettant", et "en la protégeant".

illettré! :)
0