2017-07-19 208 views
0

我試圖使用查找和-exec處理文件和要調用一個shell腳本,但似乎無法弄清楚如何將變量傳遞給該腳本:傳遞參數找到腳本

DIR_TEMP='/tmp' 
NAME='foo' 
TARGET='/tmp/target' 
find . -type f -name \*.ko.gz -exec /bin/sh -c ${DIR_TEMP}/${NAME}.sort "$TARGET" {} \; 

/tmp/foo.sort

#!/bin/sh 
echo "called, 0 :$0:, 1 :$1:, 2 :$2:" >> /tmp/debug.txt 

所有我似乎得到的內容:

called, 0 :/tmp/foo.sort:, 1 ::, 2 :: 

任何幫助,將不勝感激!

回答

0

-c選項採用一個參數,所以不是

/bin/sh -c ${DIR_TEMP}/${NAME}.sort "$TARGET" {} 

/bin/sh -c "$DIR_TEMP/$NAME.sort $TARGET '{}'" 
+0

這似乎已經解決了這一問題,感謝格倫! – user1646428

+1

這可能純粹是理論上的問題,但find的某些實現不允許以這種方式使用{}。對於那些,你可以執行'find ... -exec/bin/sh -c「$ DIR_TEMP/$ NAME.sort $ TARGET \」$ 1 \「」_ {} \;' –

+0

好的威廉。你需要轉義'\ $ 1'來保護它 –