expr:在Shell脚本中执行算术时的非整数参数

时间:2015-03-10 14:02:43

标签: bash shell cygwin sh ksh

当我尝试执行以下代码行时

#!/bin/sh
a=20
b=10
sum=`expr $a + $b` #(i thought i did wrong with ` so i put (') also to check but its becomes literals which gets printed as usual)
echo $sum

我收到了错误

  

expr:非整数参数

有人可以告诉我这段代码出了什么问题,因为几乎每个教程都提到了在Shell脚本中进行算术的同样的事情。

编辑:对于那些正在使用CYGWIN终端FYI的人。有什么区别吗?

编辑2:正如@ghoti评论中所提到的,Windows文件以/ r / n结尾,而unix以/ n结尾。因为我在Unix平台上执行时在Windows平台上编写脚本,所以当我' m删除后退给它发错误

  

$'20 \ r':找不到命令

所以肯定$ a变为20但 \ r 导致错误。那么任何想法如何缩短这个错误?

2 个答案:

答案 0 :(得分:0)

您的原始代码应该可以正常运行。即使为了确保您没有任何引号问题,您可以稍微修改它:

#!/bin/sh
a=20
b=10
sum=$(expr $a + $b)
echo $sum

答案 1 :(得分:0)

我有类似的错误。 我做了以下并解决了问题:

转到记事本++中的“编辑”,然后选择“ EOL转换”,然后选择“ UNIX / OSX格式”