注册 登录
LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区! 返回首页

逍遥浪子的个人空间 http://bbs.linuxtone.org/?14373 [收藏] [复制] [分享] [RSS]

日志

shell 编程基础

热度 3已有 853 次阅读2012-2-16 12:59 |个人分类:shell| 编程, 其他, command, shell

结构化命令:允许脚本根据变量值的条件或者其他命令的结果跳过一些命令或者循环执行这些命令
1、使用if_then语句
if command
then
     commands
fi
先运行if后面的命令,如果命令的退出状态是0(成功执行命令),就将执行then后面,fi前面的所有命令。否则就跳到fi后面继续执行。
2、if-then-else语句
if command
then
    commands
else
    commands
fi
3、嵌套if语句
if command1
then
     commands
elif command2
then
     commands
elif command3
then
     commands
fi
4、test命令(方括号[   ]为同义词)
用于提供对条件的判断
if test condition   也可以不用test condition,而使用 [ conditon ]         ([ , ] 的前后必须有空格)
then
    commands
fi
condition有三种:
(1)数值比较: –eq, –ne,              –ge,-gt,            -le, lt
       但是要注意:test命令无法处理存储在变量中的浮点值。
使用bash计算器bc时,只是欺骗了shell把浮点值作为字符串值存储于一个变量中。如果只是先使用echo语句显示结果,这种方法很好。但是在面向数值的函数(如数值测试条件)中不起作用。
底线是不能在test中使用非整数变量
(2)字符串比较:=,!=,<,>,-n(检测字符串长度是否大于0),-z(检测字符串长度是否等于0)
字符串相等:测试比较将所有标点符号和大写都考虑在内
字符串顺序:要注意两点:
1)’>’,’<’一定要用’\’转义,否则shell会将它们当做重定向符号,将字符串值看做文件名
2)大于和小于的顺序与在sort命令中的顺序不同。
在test中,同一个字母,大写字母>小写字母
在sort中,相反。
字符串大小:评估一个变量是否包含数据时,使用-n和-z比较方便
对空变量和未初始化的变量检测出的长度也为0
(3)文件比较
文件比较是shell脚本中最强大和最常用的一类比较。
test可以测试文件状态和路径。(使用的非常频繁!)
-d file: 检查file是否存在并且是一个目录
-e file: 检查file是否存在
-f file: 检查file是否存在并且是一个文件
-r file: 检查file是否存在并且可读
-s file: 检查file是否存在并且不为空
-w file: 检查file是否存在并且可写
-x file: 检查file是否存在并且可执行
-O file: 检查file是否存在并且被当前用户拥有
-G file:检查file是否存在并且默认组是否为当前用户组
file1 –nt file2: 检查file1是否比file2新
file1 –ot file2: 检查file1是否比file2旧      
5、复合条件查询
[ condition1 ] && [ condition2 ]
[ condition1 ] || [ condition2 ]
6、if-then的高级特征
(1)使用双圆括号表示数学表达式
(( expression ))
expression包括除了标准数学操作符外的其他操作符如下:
++, –, !, ~, **, <<, >>, &, |, &&, ||
(2)使用双方括号表示高级字符串处理函数
[[ expression ]]
提供了除test命令中的标志字符串比较以外的模式匹配功能
在模式匹配中,可以定义与字符串值相匹配的正则表达式
7、case 命令
可以使用case命令,而不是编写所有的elif语句来继续检查相同的变量值。
case命令以列表导向检查单个变量的多个值
case variable in
pattern1 | pattern2) commands1;;
pattern3) commands2;;
*) default commands;;
esac
 

路过

鸡蛋
3

鲜花

握手

雷人

刚表态过的朋友 (3 人)

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

Archiver|手机版|感谢所有关心和支持过LinuxTone的朋友们 转载本站内容请注明原作者名及出处 ( 京ICP备08103151 )   |

GMT+8, 2019-8-19 05:35 , Processed in 0.011441 second(s), 9 queries , Apc On.

Powered by Discuz! X2 Licensed

© 2001-2011 Comsenz Inc.

回顶部