在csh中的foreach语法

3

对于这个csh脚本

#!/bin/csh

foreach file in (.)
  echo "$file"
end

我遇到了这个错误。
foreach: Words not parenthesized.

我该怎么修复这个问题?

避免使用csh,特别是在脚本中:http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/ 如果bash或Posix sh不够好,则使用zsh。 - Basile Starynkevitch
那在Bash中的等效命令是什么? - mahmood
http://www.linuxtopia.org/online_books/advanced_bash_scripting_guide/ - Basile Starynkevitch
Bash 的等价语句是 for file in .; do echo $file; done - Barmar
2个回答

6

FYI,由于供应商硬件的原因,有些人可能被迫使用CSH - 例如ASML设备。 (https://wiki.nanotech.ucsb.edu/wiki/Stepper_3_(ASML_DUV))在此类设备上安装新外壳(或通常安装任何内容)并不推荐,以确保功能不受影响。虽然我完全同意 - 我希望我可以使用其他东西而不是CSH! - Demis

0

我发现csh在将文件分割为它们自己的迭代(它会将所有文件都汇集成单个字符串,并在其中插入EOL!不过也说不准...)时出了问题,因此我不得不使用以下显式调用ls

foreach file ( `ls /path/to/directory/` )
    echo "/path/to/directory/$file"
end

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接