Le 26/11/20 à 16h47, Étienne Mollier <etienne.moll...@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.

Répondre à