0
Je cherche à utiliser trouver et exec pour traiter les fichiers et que vous voulez appeler un script shell, mais ne peut pas à comprendre comment passer des variables à ce script:passage de paramètres pour trouver le script
DIR_TEMP='/tmp'
NAME='foo'
TARGET='/tmp/target'
find . -type f -name \*.ko.gz -exec /bin/sh -c ${DIR_TEMP}/${NAME}.sort "$TARGET" {} \;
Contenu de /tmp/foo.sort
#!/bin/sh
echo "called, 0 :$0:, 1 :$1:, 2 :$2:" >> /tmp/debug.txt
Tout ce que je semble obtenir est:
called, 0 :/tmp/foo.sort:, 1 ::, 2 ::
Toute aide serait appréciée!
qui semble avoir résolu le problème, merci Glenn! – user1646428
Cela peut être une préoccupation purement théorique, mais certaines implémentations de find ne permettront pas d'utiliser {} de cette façon. Pour ceux-là, vous pouvez faire 'find ... -exec/bin/sh -c" $ DIR_TEMP/$ NAME.sort $ TARGET \ "$ 1 \" "_ {} \;' –
Un bon William. Vous devriez échapper '\ $ 1' pour le protéger –