expr的意外行为

时间:2010-01-31 10:14:39

标签: linux shell expression

这可能听起来有点微不足道,但实际上非常令人沮丧: 谁能解释一下这个:


[~:user$]expr 3 + 2
6
[~:user$]expr 3 / 2
1
[~:user$]expr 3 * 2
expr: syntax error

expr的手册页精确指定ARG1 * ARG2是两者的算术乘积时。

谢谢,

4 个答案:

答案 0 :(得分:9)

您需要引用*,否则shell会尝试扩展文件名。

$ expr 3 '*' 2
6

答案 1 :(得分:5)

这应该足够了:

expr 3 \ * 2

答案 2 :(得分:3)

@OP,完全取决于你,但我仍然建议使用shell内部添加操作而不是调用外部expr

$ echo $(( 3*2 ))
6

如果您需要更多高级数学运算,请使用bc(dc)或awk。

答案 3 :(得分:2)

在您的shell到达*之前,

expr已展开,因此它包含DocumentsVideosWorknsfw