《Linux命令行与shell脚本编程大全》 第十一章
第十一章:使用结构化命令
使用if-then语句
比较 描述 n1 -eq n2检查n1是否与n2相等
n1 -ge n2检查n1是否大于或等于n2n1 -gt n2检查n1是否大于n2n1 -le n2检查n1是否下雨或等于n2n1 -lt n2检查n1是否小于n2n1 -ne n2检查n1是否不等于n2可以用在变量上
注意:不能使用浮点数
字符串比较
比较描述str1 = str2检查str1是否和str2相同str1 != str2检查str1是否和str2不同str1 < str2检查str1是否比str2小str1 > str2检查str1是否比str2大-n str1检查str1的长度是否非0-z str1检查str1的长度是否为0
顺序比较需要注意:
1.大于小于符号要转义,不然会被识别为重定向符号
2.test命令根据ASCII顺序排序,与sort命令不同
字符串长度
当变量为空字符串或者没有初始化时,变成长度是0
空字符串或没有初始化的变量可能会对程序有灾难性影响,使用前最好先使用test命令中的-n和-z确认
文件比较
比较描述-d file检查file是否存在并且是否是一个目录-e file检查file是否存在-f file检查file是否存在并且是否是一个文件-r file检查file是否存在并可读-s检查file是否存在并非空-w检查file是否存在并可写-x检查file是否存在并可执行-O检查file是否存在并属于当前用户所有-G检查file是否存在并且默认组与当前用户相同file1 -nt file2
检查file1是否比file2新file1 -ot file2检查file1是否比file2旧以检查目录为例:
符号描述val++后增val--后减++val先增--val先减!逻辑求反~位求反**幂运算<<左位移>>右位移&位布尔和|位布尔或&&逻辑和||逻辑或
双方括号格式
[[ expression ]]
提供了模式匹配(pattern matching)特性,可以在其中使用正则表达式
case $test inpork | beef | lamb ) echo "$test is meat!" echo "I like it!";;potato | tomato | eggplant ) echo "$test is a vegetable" echo "who likes it?";;*) echo "what's this?";;esac在java7之前,这么写是不可以的,switch case中不支持string类型
转贴请保留以下链接
本人blog地址
http://su1216.iteye.com/
http://blog.csdn.net/su1216/