Linux
我的 expr 正在列印但未評估
腳本的程式碼是:
echo "Years:" read age x=`expr $age*365` echo -e $x
我從命令行呼叫此腳本時的輸出如下:
Years:
(假設我放了 20 個)
20*365
為什麼不評價?
我們應該轉義特殊字元
*
並在值和運算符之間保留空格。試試看,
x=`expr $age \* 365`
expr
這些天已經過時並且基本上已經過時了。與以下更好的替代品相比,它的使用也非常有限且笨拙:
- 如今,bash內置了僅整數運算。
$ age=20 $ echo "$((age * 365))" 7300 $ x=$((age*365)) $ echo "$x" 7300
- 用於
bc
浮點運算:$ age=20 $ echo "$age * 365.25" | bc 7305.00
或者,如果要刪除小數部分:
$ echo "scale=0; $age * 365.25/1" | bc 7305
需要除以 1,因為加法、減法和乘法忽略了中的
scale
設置bc
。這是一個長期存在的煩惱,不太可能被“修復”。 3. 如果您更喜歡 RPN,您可以使用dc
:$ age=20 $ dc -e "$age 365.25 * p" 7305.00
注意:反引號也已過時且已棄用。使用
$(...)
而不是反引號。例如x=$(echo "$age * 365.25" | bc) x=$(dc -e "$age 365.25 * p")