Menu

Comment empeicher le Shell d'attraper une apostrophe contenue dans la var $* [Résolu]

- - Dernière réponse : lEprofSonDkon
Messages postés
177
Date d'inscription
jeudi 13 décembre 2018
Statut
Membre
Dernière intervention
25 mai 2019
- 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
Afficher la suite 

Votre réponse

2 réponses

0
Merci
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
Commenter la réponse de BillyV33
Messages postés
177
Date d'inscription
jeudi 13 décembre 2018
Statut
Membre
Dernière intervention
25 mai 2019
6
0
Merci
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.
lEprofSonDkon
Messages postés
177
Date d'inscription
jeudi 13 décembre 2018
Statut
Membre
Dernière intervention
25 mai 2019
6 -
UNE apostrophe -> "en la mettant", et "en la protégeant".

illettré! :)
Commenter la réponse de lEprofSonDkon