时间:2011-01-06 17:04:04

标签: bash shell variables ksh

2 个答案:

答案 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`

这些答案直接回答了你的问题,但你应该研究丹尼斯威廉姆森的答案,以便更好地做这些事情。