2011-10-12 52 views
0

該程序執行中的foreach命令的令人困惑的錯誤是非常簡單的:一個在csh

#!/bin/csh -f 
foreach path (fileA.txt fileB.txt) 
    wc -l $path 
    grep "test" $path 
end 

但是,輸出是:

fileA.txt/wc: Not a directory. 
fileA.txt/grep: Not a directory. 
fileB.txt/wc: Not a directory. 
fileB.txt/grep: Not a directory. 

那麼,什麼是錯的代碼,什麼是正確的方法做到這一點?

回答

0

您不應該使用路徑作爲C-Shell中的通用變量名稱,因爲它包含shell的當前搜索目錄以查找命令程序。

這會比你的代碼要好得多:

#!/bin/csh -f 
foreach mypath (fileA.txt fileB.txt) 
    wc -l $mypath 
    grep "test" $mypath 
end