linux下运行shell脚本出现expr: syntax error的情况解决办法 |
您所在的位置:网站首页 › expr股价 › linux下运行shell脚本出现expr: syntax error的情况解决办法 |
出现这个情况,一般就是语法或者结构有问题。比如我们要进行两个变量val1和val2的加减乘除取余等运算,我们需要在运算符前后都加上空格,不然就会出现expr: syntax error这个错误。具体我们看一个下面的一个例子。 #!/bin/bash read -p "please input two numbers " val1 val2 num=`expr val1 +val2` echo $num运行结果如下: pzy@ubuntu:~/shell$ chmod 740 read.sh pzy@ubuntu:~/shell$ ./read.sh please input two numbers 1 2 expr: syntax error 我们第一次运行这个程序时需要加上chmod 740 脚本文件,是为了给这个程序一个读的权限。如果我们再在加号后面加上一个空格,这个语法错误就没有了,程序就正常了。正常程序如下。 #!/bin/bash read -p "please input two numbers " val1 val2 num=`expr $val1 + $val2` echo $num运行结果如下: pzy@ubuntu:~/shell$ chmod 740 read.sh pzy@ubuntu:~/shell$ ./read.sh please input two numbers 1 2 3 还有一个我今天遇到的一个,也会出现这个语法错误。具体请看下面这个代码。 #!/bin/bash read -p "please input two numbers " val1 val2 add=`expr $val1 + $val2` sub=`expr $val1 - $val2` echo $add echo $sub mul=`expr $val1 * $val2` div=`expr $val1 / $val2` echo $mul echo $div mod=`expr $val1 % $val2` echo $mod运行结果如下: please input two numbers 5 3 8 2 expr: syntax error 1 2 出现这个的原因就是在这个乘法运算这个地方,为啥跟C语言不一样呢?这个不是乘法?我们查阅资料发现这个是属于shell里面的元字符,它代表的是任意字符串。我们知道这个的意义就需要修改它,我请教了老师,这个只需用一个反义符就可以屏蔽掉*元字符的作用,使其变成乘法运算符。正确程序如下: #!/bin/bash read -p "please input two numbers " val1 val2 add=`expr $val1 + $val2` sub=`expr $val1 - $val2` echo $add echo $sub mul=`expr $val1 \* $val2`//shell 里面规定的乘法(\*) div=`expr $val1 / $val2` echo $mul echo $div mod=`expr $val1 % $val2` echo $mod运行结果如下: please input two numbers 5 3 8 2 15 1 2 这个程序还可以这样修改,更加直观一点。程序如下: #!/bin/bash read -p "please input two numbers " val1 val2 add=`expr $val1 + $val2` sub=`expr $val1 - $val2` echo `expr $val1+$val2=$add` echo `expr $val1-$val2=$sub` mul=`expr $val1 \* $val2` div=`expr $val1 / $val2` echo `expr $val1\*$val2=$mul` echo `expr $val1/$val2=$div` mod=`expr $val1 % $val2` echo `expr $val1%$val2=$mod`运行结果如下: pzy@ubuntu:~/shell$ ./read.sh please input two numbers 5 3 5+3=8 5-3=2 5*3=15 5/3=1 5%3=2 如果我们把代码稍微修改一下,注意我只修改了最后一个取余运算作比较,代码如下,给大家做一个参考。 #!/bin/bash read -p "please input two numbers " val1 val2 add=`expr $val1 + $val2` sub=`expr $val1 - $val2` echo `expr $val1+$val2=$add` echo `expr $val1-$val2=$sub` mul=`expr $val1 \* $val2` div=`expr $val1 / $val2` echo `expr $val1\*$val2=$mul` echo `expr $val1/$val2=$div` mod=`expr $val1 % $val2` echo `expr $val1%$val2=$mod` echo $mod=`expr $val1%$val2` echo `$mod=expr $val1%$val2`运行结果如下: please input two numbers 5 3 5+3=8 5-3=2 5*3=15 5/3=1 5%3=2 2=5%3 ./read.sh: line 15: 2=expr: command not found 最后一行代码有问题。这个是做个参考,避免像我这样的小白踩坑。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |