2013-10-15 43 views
2

我有一個包含這個shell腳本:爲什麼使用嵌套反引號的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 

爲什麼?錯誤是什麼意思?

回答

3

因爲反引號不嵌套。

如果你的外殼支持更現代$(...)語法,試試這個:

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選項。

相關問題