该脚本的代码是:
echo "Years:"
read age
x=`expr $age*365`
echo -e $x
当我从命令行调用此脚本时的输出如下:
Years:
(假设我放了20)
20*365
为什么不评价呢?
答案1
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
。这是一个长期存在的烦恼,不太可能被“修复”。如果你更喜欢 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")
答案2
我们应该转义特殊字符*
并在值和运算符之间保留空格。
尝试作为,
x=`expr $age \* 365`