您的位置:首页 > 运维架构 > Shell

shell脚本应用(2)

2013-12-30 08:22 155 查看
Shell脚本应用(2)条件测试操作:
使用test命令操作
格式:test 条件表达式
或者:
[ 条件表达式 ]//注意,左右两边至少得有一个空格
1.文件测试
-d:测试是否为目录
-e:是否存在
-f:是否为文件
-r:测试当前用户是否有读取权限
-w:测试当前用户是否有写入权限
-x:测试是否设置有可执行权限
例:测试目录是否存在,$?返回来的值为0表示正常,非0表示命令不正常



为了更直观的查看测试结果,可以结合命令分隔符“&&”和echo命令一起使用,当命令成立时直接输入“yes”。”&&”表示而且的意思
例:


//如果目录存在,将会输出yes



//如果目录不存在,将不会输出
2.整数值比较
-eq:等于
-ne:不等于
-le:小于或等于
-ge:大于或等于
-gt:大于
-lt:小于
例如:
若要判断当前可用的空闲内存大小,当低于1024MB时输出具体数值,可以执行以下操作。其中“free –m”命令表示以MB为单位输出内存信息,提取的空闲内存数值通过命令替换赋值给变量cache



或者:



3.字符串比较
=:第一个字符串与第二个字符串相同
!=:第一个字符串与第二个字符串不相同,其中“!”为取反的意思
-z:检查字符串是否为空。对于未定义的值将视为空串
扩展一下:>1.txt可以清空1.txt里的内容,如果没有则可以创建1.txt文件
例:



例如:若要判断当前系统的语言环境,当发现不是“en.us”时输出信息




4.逻辑测试
逻辑测试指的是判断两个或多个条件之间的依赖关系。
&&逻辑与,表示而且的意思。只有当前后两个条件都成立时,返回的值才为0、使用test命令测试时,&&可改写为–a
||逻辑或:表示或者,只要前后两个条件有一个成立时,整个测试命令的返回值为0.使用test测试命令,可将||改写为-o
!逻辑否,表示不的意思,只有当指定的条件不成立时,整个测试命令的返回值才为0
例如:若要判断当前linux系统的内核版本是否大于2.4。可以执行以下操作




使用if条件语句
1单分支的if结构
if语句的分支指的是不同测试结果所对应的执行语句(一条或多条)。对于单分支来说,只有在条件成立时才会执行相应的代码。否则不做任何操作。语法格式如下:
if 条件测试操作
then
命令序列
fi
2.双分支的if结构
对于双分支的选择结构来说,要求针对“条件成立”“条件不成立“两种情况针对不同的操作,双分支的语法如下:
if 条件测试语句
then
命令序列1
else
命令序列2
fi
双分支if结构的执行流程:首先判断条件测试操作的结果,如果条件成立,则执行then后面的命令,忽略else及后面的命令序列2,直到if结束判断,如果条件不成立,则忽略then及后面的命令序列1,直接跳至else后面的命令序列2执行。直到if结束判断
3.多分支的if语句
由于if语句可以根据测试结果的成立,不成立分别执行操作,所以能够嵌套使用,进行多次判断。语法使用“
if 条件测试操作1
then
命令序列1
elif 条件测试操作2
then
命令序列2
else
命令序列 3
fi
多分支的if结构的执行流程:首先判断条件测试操作1的结果,如果条件1成立,则执行命令序列1,然后跳至if结束判断。如果条件1不成立,则继续判断条件测试操作2的结果,如果条件测试2成立,则执行命令序列2,然后跳至if结束判断….如果所有的条件都不满足,则执行else后面的命令序列n,直到遇见fi结束判断
1.单分支if语句应用
例题:
很多linux用户习惯上将光盘挂载到/media/cdrom下,但是linux 5.5系统默认没有建立此目录,若需要在shell脚本中执行挂载光盘的操作,默认先判断挂载点目录是否存在,若不存则新建此目录



或者



在例如:在linux下有很多命令普通用户不能直接执行,这个是直接测试当前登录的用户是否为root用户的



2.双分支if语句应用
双分支if语句只是在单分支的基础上针对“条件不成立“的情况执行另一种操作,而不是”坐视不管“的不做任何操作。
例如:若要编写一个连通性测试脚本pinghost.sh,通过位置参数$1提供目标主机地址,然后根据ping检测结果给出相应提示,如下:



//在上述脚本代码中,为了提高ping命令的测试效率,使用了-c ,-I ,-w选项分别指定只发送三个测试包。间隔0.2s,超时时间为3s、另外/dev/null相当于一个回收站。不会回显任何信息。
在例如,通过shell脚本检查vsftpd服务是否运行,如果已经运行则输出它的PId号,和监听地址,否则输出提示:警告,vsftpd服务器不可用







关闭vsftpd服务



3.多分支if语句应用
例如。若要编写一个成绩分档的脚本、study.sh。根据输入的考试成绩,来判断合格还是不合格



验证:



ok
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: