关于shell:Bash中的“[0:command not found”

“[0: command not found” in Bash

本问题已经有最佳答案,请猛点这里访问。

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

下面是我尝试过的代码。我得到这个错误[0: command not found

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

我该怎么解决这个问题?


在任务中,[之后需要一个空格,在=之前或之后不需要空格。$(($i+1)))将尝试执行((...))表达式的输出,我确信这不是您想要的。另外,在数组名之前还缺少一个$

如果更正了这些内容,您的while循环将是:

1
2
3
4
5
6
7
#!/bin/bash
i=0
while ["$i" -le"${#myarray[@]}" ]
do
  echo"Welcome $i times"
  i=$((i + 1))
done
  • i=$((i + 1))也可以写成((i++))
  • 最好在[ ... ]中用双引号括住变量。
  • 通过shellcheck检查脚本-您可以在那里找到最基本的问题

另请参见:

  • 为什么在bash的"["后面和"]"之前应该有一个空格?
  • 如何使用双括号或单括号、圆括号、大括号
  • 在bash变量赋值中找不到命令错误
  • 在bash if语句中使用[]vs[]