在Csh中执行foreach命令的一个令人困惑的错误

时间:2011-10-12 10:25:41

标签: 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.

那么代码有什么问题呢?这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

你永远不应该在C-Shell中使用路径作为通用变量名,因为它包含shell的当前搜索目录以查找命令程序。

这比你的代码要好得多:

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