2

我有一个包含以下内容的 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

为什么?错误是什么意思?

4

1 回答 1

3

因为反引号不会嵌套。

如果你的 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选项。

于 2013-10-15T21:03:10.877 回答