答案 0 :(得分:3)
答案 1 :(得分:0)
您的两个错误是由以下原因引起的:
until [$MY_VAR = 0]
MY_VAR = $(expr $MY_VAR - 1)
[我使用了$()而不是反引号,因为我无法在代码部分得到反引号]
第一个问题是方括号周围缺少空间 - 两端。 shell正在寻找命令[6
(在展开$MY_VAR
之后),而不是[
(看看/usr/bin/[
- 它实际上是一个程序)。您还应该使用-eq
进行数值比较。 =
在这里可以正常工作,但是前导零可以打破字符串比较,数字比较可以起作用:
until [ "$MY_VAR" -eq 0 ]
第二个问题是你的变量赋值中有空格。当您编写MY_VAR = ...
时,shell正在查找命令MY_VAR
。而是将其写为:
MY_VAR=`expr $MY_VAR - 1`
这些答案直接回答了你的问题,但你应该研究丹尼斯威廉姆森的答案,以便更好地做这些事情。