"[0: command not found"在Bash中表示"未找到命令"。

7 浏览
0 Comments

"[0: command not found"在Bash中表示"未找到命令"。

我正在尝试在while循环中获取数组,并且需要更新数组中的值。\n以下是我尝试的代码。我得到了这个错误:[0: 命令未找到\n

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

\n我该如何修复这个问题?

0
0 Comments

在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文件中工作的唯一问题,谢谢!

0