【问题标题】:why am I getting this bash scripting for loop error?为什么我会收到这个循环错误的 bash 脚本?
【发布时间】:2022-01-28 05:43:09
【问题描述】:

这是我的脚本

#!/bin/bash
a=1
for [ $a -ge 1 ]
do
        touch ~/file.$a
        a=`expr $a + 1`
done

当我执行它时,它给了我以下错误

./script.sh:第 3 行:意外标记 `$a' 附近的语法错误

./script.sh:第 3 行:`for [ $a -ge 1 ]'

但使用“while”而不是“for”时效果很好。

能否请您帮助我理解为什么它适用于 while 循环而不适用于 for 循环?

谢谢

【问题讨论】:

  • For 循环有不同的语法。这是错误的。
  • 不要发明自己的语法。看看here 看看如何编写循环。

标签: linux bash shell


【解决方案1】:

for 循环语法不像那个伙伴,而是这样做。

for a in {1..10}
do
touch /file.$a
done

你需要先声明变量的范围。

【讨论】:

    【解决方案2】:

    您的意思是在该语法中使用 while 而不是 for。另外,由于您使用的是 bash,请使用 for (( )) 循环:

    for (( i = 1; i <= 10; ++i )); do
        ...
    done
    

    另一个答案中也建议使用大括号扩展循环,但我不喜欢它,因为它在循环之前将迭代值扩展为单词。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-02
      • 1970-01-01
      相关资源
      最近更新 更多