一、 let与(()) 在shell编程中是可以互换的 , 它们 让 我们可以像C语言那样写程序对于 变量 运算 赋值 。 在循环语句中控制变量变化非常有用;
注 :
1 、使用 (()) 时,运算符两边需要有空格;
2 、 (())算数表达式的值在if和while判断时不用在前面加“$”;在echo输出值时需要加"$"
[iyunv@zq-crmtest-20423tmp]# echo $((c = a + b + 1))
输出 4
3 、 let 和 (()) 都只能对整数进行运算赋值 ;
4 、使用 let 或 (()) 赋值时,也可以使用 expr+ 老板键代替; ( 如下,二者等价 )
letllines=$llines+$fileLines
llines=`expr $llines+ $fileLines`
实例:
[iyunv@zq-crmtest-20423tmp]# a=1
[iyunv@zq-crmtest-20423tmp]# b=2
[iyunv@zq-crmtest-20423tmp]# let c=a+b
[iyunv@zq-crmtest-20423tmp]# echo $c
输出 3
[iyunv@zq-crmtest-20423tmp]# let a=1*111
[iyunv@zq-crmtest-20423tmp]# echo $a
输出 111
[iyunv@zq-crmtest-20423tmp]# ((c = a + b))
[iyunv@zq-crmtest-20423tmp]# echo $c
输出 3
$ x=12
$ let "x<10"
$ echo $?
1
$ (( x > 10 ))
$ echo $?
0
$if ((x > 10 ))
>then echo x greater
>else echo x not greater
>fi
二、 shell能够识别的表达式如下所示:
操作符 描述
- 减去
! 逻辑相反
* / % 乘,除,余数
+ - 加,减
<= >= < > 关系比较
== != 等于不等于
= 赋值
括号能够被用作改变表达式中计算的顺序 。 当使用逻辑和关系操作符,(!,<=,>=,<,>,++,~=),的时候,shell会返回一个代码变量, $ ?会反映结果是真还是假 ; 再一次说明,必须使用双引号来防止shell将大于和小于运算符当作I/O重定向。
一、 先说[]和test,两者是一样的,在命令行里test expr 1 和[expr 1 ]的效果相同。 他们 的三个基本 作用是判断文件、判断字符串、判断整数 。支持使用与或非将表达式连接起来。要注意的有:
1.test 和 [] 中可用的比较运算符只有==和!=,两者都是用于字符串比较的,不可用于整数比较,整数比较只能使用-eq,-gt这种形式。
2.论是字符串比较还是整数比较都千万不要使用大于号小于号。当然,如果你实在想用也是可以的,对于字符串比较可以使用尖括号的转义形式,如果比较"ab"和"bc":[ ab \< bc ],结果为真,也就是返回状态为0 。
3. test 和 [] 中 的逻辑运算与或非只能使用 -a 、 -o 、 !
实例:
if [ $a=="abc" ] ;then
…
fi
if test $var1 ="1"-a $var2 = "2" ; then
echo "equal"
fi
if[ $var1= "1"-a $var2 = "2" ] ; then
echo "equal"
fi
二、 [[ ]]是内置在shell中的一个命令,它就比刚才说的test强大的多了。简直强大的令人发指!
1. 支持字符串的模式匹配 (使用=~操作符时甚至支持shell的正则表达 式)。逻辑组合可以不使用test的-a,-o而使用&&,||这样更亲切的形式 (针对c、Java程序员)。
2.字符串比较时可以把右边的作为一个模式 (这是右边的字符串不加双引号的情况下。如果右边的字符串加了双引号,则认为是一个文本字符串。 ),而不仅仅是一个字符串,比如[[hello == hell? ]],结果为真。
注 : 使用[]和[[]]的时候不要吝啬空格,每一项两边都要有空格 。
实例:
[[ $a == z* ]] # 如果$a以"z"开头(模式匹配)那么将为true
[[$a == "z*" ]] #如果$a等于z*(字符匹配),那么结果为true
[ $a == "z*" ] 和 [ $a == z* ] # 效果一样, 如果$a等于z*(字符匹配),那么结果为true
!= 不等于,如: if [ "$a" != "$b" ]
这个操作符将在 [[]] 结构中使用模式匹配 .
< 小于 , 在 ASCII 字母顺序下 . 如 :
if [[ "$a" < "$b" ]]
if [ "$a" \< "$b" ]
注 : 在 [] 结构中 "<" 需要被转义 .
-z 字符串为 "null". 就是长度为 0.
-n 字符串不为 "null"
注 : 使用 -n 在 [] 结构中测试必须要用 "" 把变量引起来 . 使用一个未被 "" 的字符串来使用 !-z
版权声明:本文为博主原创文章,未经博主允许不得转载。
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com