Shell程序,for循环出错。变量未使用

时间:2018-12-13 09:12:42

标签: bash shell for-loop

我对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}”,而不是用大括号扩展中的一种可能情况代替变量。

2 个答案:

答案 0 :(得分:2)

您尝试利用括号扩展。根据所使用的外壳,是否支持花括号扩展。不支持括号扩展的外壳是POSIX 。支持大括号扩展的shell是

Posix兼容的shell(shdash):如果您想在shdash中模仿这种大括号扩展,你必须做类似的事情

for i in `seq 0 10 800`; do
  ...
done

禁用括号扩展::虽然都支持括号扩展,但可能已被禁用。对于,可以通过执行命令来完成

$ 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])