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.