expr意外的行为

这可能听起来有些微不足道,但实际上是相当令人沮丧的:任何人都可以解释我:

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

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

谢谢,

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

 $ expr 3 '*' 2 6 

这应该够了:

expr 3 \ * 2

*在shell到达expr之前被扩展,因此它包含DocumentsVideosWorknsfw

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

 $ echo $(( 3*2 )) 6 

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