linux下运行shell脚本出现expr: syntax error的情况解决办法

您所在的位置:网站首页 expr股价 linux下运行shell脚本出现expr: syntax error的情况解决办法

linux下运行shell脚本出现expr: syntax error的情况解决办法

#linux下运行shell脚本出现expr: syntax error的情况解决办法| 来源: 网络整理| 查看: 265

出现这个情况,一般就是语法或者结构有问题。比如我们要进行两个变量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