shell编程expr表达式----传智播客的书linux编程基础中出现的问题
首先声明:本人是传智播客的粉丝,拥有他出的多本编程书籍,此文绝无诋毁抹黑之意。
但在linux系统编程第88页给出的while循环范例中,代码运行无法得到预期结果
原代码如下
#!/bin/sh sum=0 count=1 while [ $count -le 100 ] do sum='expr $sum+$count' count='expr $count + 1' done echo "sum=$sum" exit 0
书中给出的结果是5050,显然这是一个从1循环到100的加运算
but 事实很打脸,运行后始终提示:
修改后的代码
#!/bin/sh sum=0 count=1 while [ $count -le 100 ] do sum=$(expr $sum + $count) #尤其注意!表达式中 运算符前后要有空格否则无法正常运行,说人话就是 $sum空格+空格$count count=$(expr $count + 1) done echo "sum=$sum" exit 0
until的例子也是如此
#!/bin/sh i=0 until [ $i -gt 5 ] do i=$(expr $i + 1) echo "${i}" done exit 0