我对Shell脚本非常陌生。 我的代码应该非常简单,只是一个教程,但是我无法使其工作:
case='Naca0012_pitch_V1'
for i in {0..800..10}
do
tec $case.$i.plt;
cat tec.00* > $case.$i.dat;
done
命令tec
生成一些我需要连接的文件。
我得到的是:
Error opening file Naca0012_pitch_V1.{0..800..10}.plt
来自tec
实用程序。
似乎代码放置了“ {0..800..10}”,而不是用大括号扩展中的一种可能情况代替变量。
答案 0 :(得分:2)
您尝试利用括号扩展。根据所使用的外壳,是否支持花括号扩展。不支持括号扩展的外壳是POSIX sh和dash。支持大括号扩展的shell是bash,ksh和zsh。
Posix兼容的shell(sh
或dash
):如果您想在sh
或dash
中模仿这种大括号扩展,你必须做类似的事情
for i in `seq 0 10 800`; do
...
done
禁用括号扩展::虽然bash,ksh和zsh都支持括号扩展,但可能已被禁用。对于bash和ksh,可以通过执行命令来完成
$ set +B
$ for i in {0..800..10}; do echo $i; done
{0..800..10}
答案 1 :(得分:-1)
您的循环不正确。
如果您的意图是从0循环到800,那么您的循环就必须像
for i, col in enumerate(col1):
if any([keyword.lower() in col.lower() for keyword in keywords]):
print(col2[i])