Bash中的“[0:命令未找到”

时间:2017-03-02 14:46:32

标签: bash shell syntax

我试图在while循环中获取数组,并且还需要更新数组中的值。

以下是我试过的代码。我收到此错误[0: command not found

#!/bin/bash
i=0
while [$i -le "{#myarray[@]}" ]
do 
    echo "Welcome $i times"
    i= $(($i+1)))
done

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:13)

[之后需要一个空格,并且在作业中=之前或之后没有空格。 $(($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检查您的脚本 - 您可以在那里找到最基本的问题

另见: