2第二章:Shell编程之条件语句判断

2第二章:Shell编程之条件语句判断
1、条件判断
格式:[ 条件表达式] //注意:条件表达式与中括号之间必须隔开
(1)文件测试:
-d :(directory)表示测试是否为目录
-e (exist):表示测试文件或目录是否存在
-f(file):表示测试是否为文件
-r(read):测试当前用户是否可读
-w(write):测试当前用户是否可写
-x(excute):测试当前用户是否可执行
-s:表示测试文件是否为空,非0时为真,如果文件有内容,$?判断时为0
-nt(new then):测试第一个文件是否比第二个文件新
-ot(old then):测试第一个文件是否比第二个文件旧
-ef:测试第一个文件是否与第二个文件是同一个文件

(2)整数测试
-eq:等于
-ne:不等于
-gt:大于
-lt:小于
-ge:大于或等于
-le:小于或等于

判断硬盘是否被挂载:[ $(df -Th | grep /dev/sr0 |wc -l) -eq 0 ]
判断设备是否联网:ping -c 2 -i 0.1 -w 2 www.baidu.com

(3)字符串判断
-z:用于判断字符串是否为空,为空时为真

(4)逻辑判断
-a:表示并且
-o:表示或者
如:
[ 1 -eq 1 -a 2 -eq 2 ]
表示1等于1,并且2等于2是否同时为真,同时为真,则最终结果判断为真
[ 1 -eq 1 -o 2 -eq 2 ]
判断1等于1,或者2等于2是否有一个为真,只有一个为真,则最终结果判断为真

&&:表示前面一个命令执行结果为真时,才会执行下一个命令
||:表示前一个命令执行结果不为真,才会执行下一个命

2、if条件语句
(1)if单分支判断
格式:
if 条件判断
then 命令序列
fi

(2)if双分支判断
格式:
if 条件判断
then
命令序列
else
命令序列
fi

(3)if多分支判断
格式:
if 条件判断1
then
命令序列1
elif 条件判断2
then
命令序列3
以此类推,最后
else
命令序列N
fi

case语句:
格式:
case 变量值(如$1) in
匹配模式1)
命令序列1
;;
匹配模式2)
命令序列2
;;
*)
命令序列3
esac
多用于书写服务控制脚本
如:
#!/bin/bash

chkconfig: 3 90 10

case $1 in
start)
echo $RANDOM > /var/run/prog.pid && echo “程序已经启动”

;;
stop)
rm -rf /var/run/prog.pid && echo “程序已经停止”
;;
restart|reload)
$0 stop
$0 start
;;
status)
if [ -f /var/run/prog.pid ]
then
echo “程序在运行中”
else
echo “程序没有运行”
fi
;;
*)
echo “usage: $0 {start|stop|restart|reload|status}”
esac
其中第二行chkconfig用于定义服务在开机时的自动启动状态,拥有三个参数,第一个参数用于定义服务在什么级别默认启动,第二个参数决定服务在开机时作为第几个服务启动,第三个参数决定服务在关机时作为第几个服务关闭

shell函数:
作用:将一系列命令定义为一个字符串,可以在脚本中随意应用(类似于变量的作用)
例:
#!/bin/bash

mnt(){
if [ $(df -hT|grep /dev/sr0 |wc -l) -eq 0 ]
then
[ -d /media ] || mkdir /media
umount /media &> /dev/null
mount /dev/sr0 /media &> /dev/null
else
umount /dev/sr0 &> /dev/null
[ -d /media ] || mkdir /media
umount /media &> /dev/null
mount /dev/sr0 /media &> /dev/null
fi
return 5
}

mkbak(){
cd /etc/yum.repos.d
[ -d ./bak ] || mkdir ./bak
}

mkyum_conf(){
if [ $(ls ./ |wc -l) -eq 1 ]
then
echo -e “[local]\nname=local\nbaseurl=file:///media\nenabled=1\ngpgcheck=0” > local.repo
else
mv -f $(ls ./|grep -v bak) ./bak
echo -e “[local]\nname=local\nbaseurl=file:///media\nenabled=1\ngpgcheck=0” > local.repo
fi
}

mkyum(){

/var/run/yum.pid
yum -y clean all &> /dev/null && echo “yum缓存清除”
yum makecache &> /dev/null && echo “yum已建立”
}

mnt
mkbak
mkyum_conf
mkyum

===================================================

说明:
脚本最开始定义了四个函数,函数名分别为mnt,mkbak,mkyum_conf,mkyum,每个函数都包含一系列命令
脚本最后,写的函数名,为调用函数的过程,会按照函数名的编排顺序,依次执行每个函数中的所有命令

补充:
exit:
作用:用于退出脚本,在退出的同时可以指定退出时的返回值(状态码,$?)
格式:exit {你想设置的状态码数字}

return:
作用:用于退出函数,在突出的同时可以指定退出时的返回值(状态码,$?)
格式:return {你想设置的状态码数字}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值