我有一个包含以下内容的 shell 脚本:
var1=`expr $RANDOM % 100`
var2=`expr $RANDOM % 1000 \* 60`
...
...
sleep `expr $var2- `date -t` + $var1`
它给了我这个错误:
sleep:invalid number of operands
expr error: invalid syntax
+ cannot execute no such file or directory
为什么?这个错误是什么意思?
最佳答案
因为反引号不能嵌套。
如果您的 shell 支持更现代的 $(...)
语法,请尝试以下操作:
var1=$(expr $RANDOM % 100)
var2=$(expr $RANDOM % 1000 \* 60)
...
...
sleep $(expr $var2 - $(date -t) + $var1)
如果没有,您可以将中间值存储在另一个变量中:
var1=`expr $RANDOM % 100`
var2=`expr $RANDOM % 1000 \* 60`
...
...
date=`date -t`
sleep `expr $var2 - $date + $var1`
(我还添加了一个空格,将 $var2-
更改为 $var2 -
。)
顺便说一句,我无法尝试此操作,因为在我的系统上,date
命令没有 -t
选项。
关于shell - 为什么带有嵌套反引号的 shell 命令会失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19390805/