Bonjour à tous

Je me trouve confronté à un problème super con: je n'arrive pas à envoyer à find des critères de recherche à partir de variables shell. J'ai pourtant tout essayé

Test 1
Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
#!/bin/bash
 
critere="-name \*"
echo "critere=[$critere]"
set -x
find /tmp $critere

Le shell me montre critere=[-name \*] donc là ça me va puis + find /tmp -name '\*' (il m'a rajouté un backslash devant l'étoile pourtant déjà mise entre quotes simples)

Test 2
Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
#!/bin/bash
 
critere='-name *'
echo "critere=[$critere]"
set -x
find /tmp $critere

Là, ça me donne critere=[-name *] puis + find /tmp -name x y z t ... (tous mes fichiers présents dans mon dossier courant). Il a interprété l'étoile avant de l'envoyer au find !!!

Ok, arrêtons donc l'interprétation
Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
#!/bin/bash
 
critere='-name *'
echo "critere=[$critere]"
set -x
find /tmp "$critere"

Et là, j'ai critere=[-name *] donc toujours bon puis + find /tmp '-name *' avec des quotes devant l'option -name ce qui me donne un find: prédicat inconnu « -name * ».

J'y arrive en mettant eval find /tmp $critere mais n'y a-t-il pas moyen de faire sans ???

Si quelqu'un a une idée...