2011-12-28 31 views
1

Shell命令從txt文件的某些變量執行「發現」我做了這個 ,但它不工作。 是否與執行語句錯誤?執行與可變

#/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 2011-12-28 03:00:16

+0

與$ $ ST線沒有問題回聲$ ST只是串ST =」。 service.getFile(\「$ line」 – shannon 2011-12-28 03:10:14

回答

0

grep可以從文件中讀取多個圖案(-f選項):

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

其中patterns.txt(前置'service.getFile('於每行)爲:

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

嘗試和報價$ST在您的find命令。

更重要的是:

  • ,因爲你從當前目錄運行,./是沒有必要的;
  • 你似乎沒有任何特殊的正則表達式字符((需要在的grep經典的正則表達式模式被引用,而我假設你沒有意味着字面點),所以使用fgrep代替(或grep -F )。即:。

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