Bash中的"[0:命令未找到"

Dha*_*abu 7 syntax bash shell

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

以下是我试过的代码.我收到这个错误[0: command not found

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

我该如何解决?

cod*_*ter 14

在作业[之前或之后需要一个空格并且没有空格=.$(($i+1)))会尝试执行((...))表达式的输出,我相信这不是你想要的.此外,您$在数组名称之前缺少一个.

通过纠正这些问题,您的while循环将是:

#!/bin/bash
i=0
while [ "$i" -le "${#myarray[@]}" ]
do 
  echo "Welcome $i times"
  i=$((i + 1))
done
Run Code Online (Sandbox Code Playgroud)
  • i=$((i + 1)) 也可以写成 ((i++))
  • 将变量括在内部的双引号中总是更好 [ ... ]
  • 通过shellcheck检查你的脚本- 你可以在那里捕获大多数基本问题

也可以看看:

  • 很好的回答一个不确定的问题(足够广泛,可以分成多个欺骗,正如你所指出的那样). (2认同)