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

问题描述 投票:0回答:1

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

下面是我尝试过的代码。我收到此错误

[0: command not found

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

我该如何解决这个问题?

bash shell syntax sh
1个回答
30
投票

作业中

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

另请参阅:

© www.soinside.com 2019 - 2024. All rights reserved.