用变量执行shell命令

时间:2011-12-28 02:58:42

标签: shell echo

要使用txt文件中的某些变量执行'find',我就这样做了 但它不起作用。 执行语句是错误的吗?

#/bin/bash 
while read line; 
do 
   echo tmp_name: $line
   for ST in 'service.getFile("'$line;
           do
                   find ./compact/ -type f -exec grep -l $ST {} \;
           done
done < tmpNameList.txt

2 个答案:

答案 0 :(得分:1)

$ST命令中尝试引用find

更重要的是:

  • 因为您从当前目录操作,所以不需要./;
  • 你似乎没有任何特殊的正则表达式字符((需要在grep的经典正则表达式模式中引用,我假设你做了表示字面点),因此请改用fgrep(或grep -F)。即:

               find compact/ -type f -exec fgrep -l "$ST" {} \;
    

答案 1 :(得分:0)

grep可以从文件中读取多个模式(-f选项):

find ./compact/ -type f -exec grep -f patterns.txt {} +

其中patterns.txt(每行前加'service.getFile(')为:

sed 's/^/service.getFile(/' tmpNameList.txt >patterns.txt