shell脚本中的逻辑判断

如果你学过C或者其他语言,相信你不会对if 陌生,在shell脚本中我们同样可以使用if逻辑判断shellif判断的基本语法为:
1)不带else
if 判断语句; then
command
fi



if1.sh中出现了 ((a<60))这样的形式,这是shell脚本中特有的格式,用一个小括号或者不用都会报错,请记住这个格式,即可执行结果为:



2)带有else
if 判断语句 ; then
command
else
command
fi



执行结果为:



3)带有elif
if 判断语句一 ; then
command
elif 判断语句二; then
command
else
command
fi



这里的 && 表示并且的意思,当然你也可以使用 || 表示或者,执行结果:



以上只是简单的介绍了if语句的结构在判断数值大小除了可以用”(( ))”的形式外,还可以使用”[ ]”。但是就不能使用>, < , = 这样的符号了,要使用 -lt (小于),-gt (大于),-le (小于等于),-ge (大于等于),-eq (等于),-ne (不等于)



再看看if中使用 && ||的情况



shell 脚本中if还经常判断关于档案属性,比如判断是普通文件还是目录,判断文件是否有读写执行权限等常用的也就几个选项:
-e :判断文件或目录是否存在
-d :判断是不是目录,并是否存在
-f :判断是否是普通文件,并存在
-r :判断文档是否有读权限
-w :判断是否有写权限
-x :判断是否可执行
使用if判断时,具体格式为: if [ -e filename ] ; then



shell 脚本中,除了用if来判断逻辑外,还有一种常用的方式,那就是case具体格式为:
case 变量 in
value1)
command
;;
value2)
command
;;
value3)
command
;;
*)
command
;;
esac
上面的结构中,不限制value的个数,*则代表除了上面的value外的其他值下面笔者写一个判断输入数值是奇数或者偶数的脚本



$a 的值或为1或为0,执行结果为:



也可以看一下执行过程:



case脚本常用于编写系统服务的启动脚本,例如/etc/init.d/iptables中就用到了,你不妨去查看一下

添加新评论 »