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

Posted

技术标签:

【中文标题】Bash中的“[0:找不到命令”【英文标题】:"[0: command not found" in Bash [duplicate] 【发布时间】:2017-07-22 08:37:31 【问题描述】:

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

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

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

我该如何解决这个问题?

【问题讨论】:

我发现 Greg 的 Wiki 对学习 bash 很有帮助:mywiki.wooledge.org/BashGuide/TestsAndConditionals 【参考方案1】:

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

另见:

Why should there be a space after '[' and before ']' in Bash? How to use double or single brackets, parentheses, curly braces Command not found error in Bash variable assignment Using [ ] vs [[ ]] in a Bash if statement

【讨论】:

对一个不确定的问题的好答案(正如你所指出的,足够广泛,可以分成多个骗子)。 这是阻止我的启动脚本在我的 .bashrc 文件中工作的唯一原因,谢谢!

以上是关于Bash中的“[0:找不到命令”的主要内容,如果未能解决你的问题,请参考以下文章

无法从 WSL bash 中的批处理文件运行 Homebrew 应用程序(找不到命令)

Docker /bin/bash: nodemon: 找不到命令

Git Bash:远程:找不到命令

(Mac) -bash: __git_ps1: 找不到命令

终端:-bash:'别名:找不到命令

bash:mkvirtualenv:找不到命令