Re: Commande find
Le 26/11/20 à 16h47, Étienne Mollier <etienne.mollier@mailoo.org> a écrit :
> > find -iname Mozilla | egrep -v "$DIR" | xargs rm -Rvf >
> > delmozilla.log;
> ^~~~~^
> Je serais à votre place, je protègerais la variable avec des
> double quotes, comme ci-dessus. DIR est amenée à stocker des
> expressions rationelles, et ce genre de contenu peut facilement
> être interprété par le shell d'une façon inattendue.
Oui, mais juste pour préciser le shell interprête bien ce qu'il y a
dans des doubles quotes, c'est justement l'effet voulu ici, $DIR sera
bien remplacé par son contenu.
Mais si le contenu contient des $ ou des ! ça ne sera pas interprété
par le shell, sauf si on passe ça à une autre commande…
(par ex si tout ça est dans une commande passé à ssh entre ").
Le quoting en shell peut vite tourner au cauchemar…
J'essaie de créer des variables intermédiaire quand je dois faire des trucs
comme
ssh $host "<une commande générée, avec du pipe et du quoting dedans>"
mais j'ai de temps en temps des trucs un peu horrible comme
awk "on met des doubles quotes car on veut que $foo soit interprété"'ici on peut mettre du $ qui sera bien passé à awk'"suite du script, on peut aussi echapper \$foo pour qu'il ne soit pas interprété"
où il faut faire bien gaffe à ce qu'une variable qui sera interprétée ne
contiennent pas de " ou ' suivant le contexte.
--
Daniel
Si vous ne payez pas un service fourni par une entreprise sur Internet,
c'est que vous n'êtes pas le client mais le produit vendu.
Reply to: