首页 > 代码库 > shell条件判断
shell条件判断
条件判断式
只要讲到程序的话,那么条件判断式,亦即是if then这种判别式肯定一定要学习的,另外一种是case...esac
if....then
这个是if...then 是最常见的条件判断式了,它分为单分支条件判断式,双分支条件判断式,多分支条件判断式
单分支条件判断语句:
if [ 条件判断式 ]
then
输出内容
fi
双分支条件判断式:
if [ 条件判断式 ]
then
输出内容
else
输出内容
fi
多分支条件判断式
if [ 条件判断式 ]
then
输出内容
elif [ 条件判断式 ]
then
输出内容
else
输出内容
fi
对于条件判断式里面的对比常见的有3种方式,分别是数值对比、字符对比、文件对比
数值对比:
整数对比
-eq:测试两个整数是否相等,比如$A -eq $B
-ne:测试两个整数是否不等:不等,为真:相等,为假
-gt:测试一个数是否大于另一个数:大于,为真:否则,为假
-lt:测试一个数是否小于另一个数:小于,为真:否则,为假
-ge:大于或等于
-le:小于或等于
字符对比:
STRING1 = STRING2 :表示字符相等
STRING1 != STRING2:表示字符不相等
文件对比:
-e:表示文件是否存在
-f:表示文件存在且是一个普通文件
##还有很多选项,以上两个是比较常用的
练习:写一个脚本
判断当前系统上是否有用户默认shell为bash:
如果有,就显示有多少个这类用户:否则,就显示没有这类用户
[root@xiangys0134_2 ~]# cat ba.sh
#!/bin/bash
bashuser=`grep "\<bash\>" /etc/passwd |cut -d":" -f 1`
if [ $? -eq 0 ];then
echo "以下用户拥有bash:"
echo "${bashuser}"
else
echo "没有用户拥有bash"
fi
练习:写一个脚本
给定一个文件,比如/etc/inittab
判断这个文件中是否有空白行
如果有,则显示其空白行数:否则,显示没有空白行
[root@xiangys0134_2 ~]# cat hang.sh
#!/bin/bash
hang=`grep ‘^$‘ /etc/inittab |wc -l`
if [ ! $? -eq 0 ];then
exit 8
fi
if [ $hang -gt 0 ];then
echo "有${hang}行空白行"
else
echo "没有空白行"
fi
练习:写一个脚本
给定一个用户,判断其UID与GID是否一样
如果一样,就显示此用户为"good guy":否则,就显示此用户为"bad guy"
[root@xiangys0134_2 ~]# cat ug.sh
#!/bin/bash
useruid=`id -u "$@" 2>/dev/null`
if [ ! $? -eq 0 ];then
echo "请传入正确的用户"
exit 9
fi
usergid=`id -g "$@" 2>/dev/null`
if [ ! $? -eq 0 ];then
echo "请传入正确的用户"
exit 9
fi
if [ $# -eq 1 ];then
if [ $useruid -eq $usergid ];then
echo "good guy"
echo "${1}的UID和GID"
else
echo "bad guy"
fi
else
echo "请传入正确的参数"
fi
练习:写一个脚本
判定命令历史中历史命令的总条数是否大于1000,:如果大于,则显示"Some command will gone":否则显示"ok"。
[root@xiangys0134_2 ~]# cat his.sh
#!/bin/bash
#
his=`history |wc -l 2>/dev/null`
if [ $his -gt 1000 ];then
echo "Some command will gone"
else
echo "ok"
fi
case....esac判断
语法
case 变量名称 in
值一)
输出信息
;;
值二)
输出信息
;;
*)
输出信息
;;
esac
#一般常用于传参
本文出自 “常想一二” 博客,请务必保留此出处http://250919938.blog.51cto.com/962010/1918592
shell条件判断