读书人

Shell 学习札记(三)状态码 条件判断

发布时间: 2012-07-04 19:33:54 作者: rapoo

Shell 学习笔记(三)状态码 条件判断 算术操作

?1、!

?????? 逻辑 ?????????????? then (( a < b ))?????????#数字比较????????
???????????????else??[[ $a < $b ]]?????#字符串字符序比较
?????????????fi

?????? then
??????????? echo '$a is less than $b'
?????? fi

??????

???????#if [ ] 测试

???????if [ xyz ]??? # 字符串、任意数字均为真,未声明变量为假,注意要有空格,否则报错


3、test [ ]? [[ ]]? (( ))

?????? if test -z "$1"???????? ==? if [ -z "$1"?]
???????使用??????

?????? (( )): 扩展并计算一个算术(整数)表达式的值. 如果表达式的结果为0, 那么返回的退出状态码为

?????

??????<小于,依照ASCII字符排列顺序??????? >? 与此相同

???????????????

注意"<"字符在[ ] 结构里需要转义

??????????????

?????? -z? : 字符串为"null",即是指字符串长度为零。???????-n? : 字符串不为"null",即长度不为零.

?

6、算术操作符

???????** 求幂

???????算术操作符经常会出现在 expr或let表达式中.

???????let “a=5**3”

?????? expr 5%3

?

7、数字表示

?????? 8进制: 以 0 开头

?????? 16进制: 以'0x'或者'0X'开头的数字

?????? 其他进制: BASE#NUMBER, BASE的范围在2到64之间,NUMBER受限于ASCII字符范围(2 - 64):10个数字 + 26个小写字母 + 26个大写字符 + @ + _
???????e.g.??let "b64 = 64#@_"??????# 4031
???????