"[0: command not found"在Bash中表示"未找到命令"。
在Bash中出现"[0: command not found"的问题的原因是在赋值中的[
后面需要有一个空格,而=
前后不应该有空格。$(($i+1)))
会尝试执行((...))
表达式的输出,这肯定不是你想要的。此外,你还忘记了数组名前面的$
符号。
将这些问题进行修正后,你的while循环应该是这样的:
#!/bin/bash i=0 while [ "$i" -le "${#myarray[@]}" ] do echo "Welcome $i times" i=$((i + 1)) done
i=$((i + 1))
也可以写成((i++))
- 最好将变量用双引号括起来放在
[ ... ]
中 - 通过shellcheck检查你的脚本,可以捕捉到大多数基本问题
另外参考:
这是一个非常有价值的回答(问题足够广泛,足以分成多个重复问题,正如你指出的)。
这正是阻止我的启动脚本在我的.bashrc文件中工作的唯一问题,谢谢!