开发者问题收集

在 shell 中将变量值减 1

2021-12-31
2096

使用 /bin/sh 而不是使用 /bin/bash 脚本在 while 循环中将变量值减少 1 的正确语法是什么

我使用了下面的方法但没有用

 a=15
 ((a=a-1))   // not working 
 ((a--))       // not working 

编辑 1

i=0
a=[]
                    b=15
                    while [ $a == [] ] && [ "$i" -le 15 ]
                    do 
                      echo " Waiting ."
                      sleep 60s
                      ((i=i+1))
                      b=`expr $b- 1`
                      a=`some command`
                   
                    done

仍然出现以下错误

sh: was: unknown operand /bin/sh: exit: line 186: Illegal number: -1

2个回答

算术替换拼写为 $(( )) ,并扩展为结果。如果您只需要副作用(例如增量),请在空命令中使用它:

a=15
: $((--a))
echo $a

请注意,shell 算术仅限于整数。

Jens
2021-12-31
$ a=15
$ a=`expr $a - 1`
$ echo $a
14
Thiru
2021-12-31