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

发布于 2024-12-09 16:40:35 字数 333 浏览 2 评论 0原文

该程序非常简单:

#!/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.

那么代码有什么问题以及正确的方法是什么?

The program is very simple:

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

However, the output is:

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

So what's wrong with the code and what's the correct way of doing it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

冷清清 2024-12-16 16:40:35

切勿在 C-Shell 中使用 path 作为通用变量名,因为它包含 shell 查找命令程序的当前搜索目录。

这将比您的代码工作得更好:

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

You should never use path as a generic variable name in C-Shell since it contains the current search directories for the shell to find the command programs.

This will work much better than your code:

#!/bin/csh -f
foreach mypath ( fileA.txt fileB.txt )
    wc -l $mypath
    grep "test" $mypath
end
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文