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 应用程序(找不到命令)