x=1
while [ $x -le 50 ]
do
echo $x
$x=(($x + 1))
done
我已经写了上面的代码。在许多编程语言中,这似乎是一项简单的任务,但对我来说却给出了这个错误。
solution.sh: line 5: syntax error near unexpected token `('
solution.sh: line 5: ` $x=(($x + 1))'
如何调试 bash 中的错误。有IDE吗?
答案1
shell 不是一种(好的)编程语言,它(首先)是一个命令行解释器。如果要计数,请使用计数命令,而不是循环中的echo
and命令。[
例如,GNU 系统有seq
这样的命令。替代方案是awk
或bc
例如:
seq 50
echo 'for (i=1; i<=50; i++) i' | bc
awk 'BEGIN {for (i=1; i<= 50; i++) print i}'
如果您发现自己在 shell 中使用循环,那么您很可能采用了错误的方法。
答案2
打印 1-50 的数字
printf '%s\n' {1..50}
打印 1-50 之间的数字,步骤为 2 (bash 4+):
printf '%s\n' {1..50..2}
答案3
第 5 行:更改$x=(($x + 1))
为x=$(($x + 1))
.
您可以只使用seq 1 50
.
如果是x=$(($x + 2))
,您可以使用seq 1 2 50
,其中 2 表示步长/增量。