【问题标题】:Equivalent to for ((c=1; c<=5; c++)) for /bin/sh等效于 for ((c=1; c<=5; c++)) for /bin/sh
【发布时间】:2021-08-12 01:47:26
【问题描述】:

我在shell中有以下代码用于“for循环”

#!/bin/sh
for (( c=1; c<=5; c++ ))
do
    echo "welcome $c times"
done

运行时: ./test.sh

以下是错误:

./test.sh[2]: syntax error at line 2 : '(' unexpected.

我已尝试所有可能的方法来消除此错误。

#!/bin/sh
for (( c=1; c<=5; c++ )); do
    echo "welcome $c times"
done
#!/bin/sh
for ( c=1; c<=5; c++ )
do
    echo "welcome $c times"
done
#!/bin/sh
for c=1; c<=5; c++
do
    echo "welcome $c times"
done
#!/bin/sh
for (c=1; c<=5; c++)
do
    echo "welcome $c times"
done
#!/bin/sh
for (( c=1; c<=5; c++ ));
do
    echo "welcome $c times"
done

我已经阅读了其他指定 bash 的文章。我的系统上没有 bash,所以不能使用它。

.sh 上针对此问题的任何解决方法都会有很大帮助。

提前致谢!

【问题讨论】:

  • 仅供参考。我已经编辑了我的问题。你可以看看。谢谢!
  • 如果您陈述了您希望实现的目标,我们可以提供更多帮助。例如seq 100 | while read N; do echo "N=$N"; done 是一个选项。
  • 你有ksh吗?
  • @LorinczyZsigmond, seq 不是 POSIX 指定的,因此不能保证比 bash 本身在任何地方都可用。

标签: shell aix


【解决方案1】:

sh shell 解释器没有您尝试使用的循环结构。如果您的系统上存在bash,您可以使用它,或者将循环更改为像这样读取

for c in 1 2 3 4 5
do
    echo "welcome $c times"
done

对于枚举值不合理的较大循环,您应该使用while 实现循环

c=1
while [ $c -le 5 ]
do
    echo "welcome $c times"
    c=$((c+1))
done

【讨论】:

  • 感谢您的信息。由于数据太大,我会尝试使用while循环。
猜你喜欢
  • 1970-01-01
  • 2011-04-28
  • 2011-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-05
  • 1970-01-01
相关资源
最近更新 更多