2011-12-28 8 views
1

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 
+1

何 'service.getFileは('ことになっていることは、bashので認識構文ではありません – duskwuff

+0

$ ST $ラインとの問題はない$ STは単なる文字列であるエコーST =」?。。。 service.getFile(\ "$ line" – shannon

答えて

0

grepファイル(-fオプション)から複数のパターンを読むことができます:中

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

試してみて、引用$STpatterns.txt(各ラインの前に追加'service.getFile(')がある

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

あなたのfindコマンド。

何よりです:あなたは、現在のディレクトリで動作するので、

  • ./は必要ありません。
  • 何か特別な正規表現の文字ていないようです(grepの古典正規表現モードで引用する(ニーズを、そして私はあなたがリテラルのドットを意味したと仮定)、その代わりにfgrep(またはgrep -Fを使用)。すなわち:

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