设为首页 加入收藏

TOP

Shell编程之条件测试
2014-11-24 02:31:56 来源: 作者: 【 】 浏览:0
Tags:Shell 编程 条件 测试

shell编程中,当使用if语句时,总是涉及到条件的判断。下面来讨论下条件判断的各种情况。


1. 条件为语句
例如:当目录下有sam开头的文件时,输出hi,it's here.
if ls sam* &> /dev/null; then
echo "Hi,it's here."
fi


当条件为语句时,直接跟在if后面,如果语句执行成功,返回0,表示真,然后执行语句块中的语句。


再来个例子,查看本机中是否有hive的用户,如果有,显示hive的uid和bash类型。
if grep "^hive" /etc/passwd; then
grep "^hive" /etc/passwd | cut -d: -f1,3,7
fi


2. 条件为变量判断时
即判断某个变量是否符合某个条件的时候,判断语句有下面三种类型
[ expression ]
[[ expression ]]
test expression
根据变量类型,分为以下几种情况讨论:
(1) 整数测试
当变量为整数时,可以选择[ expression ]这种格式的语句。
expression可以写成这样:数值1 比较符号 数值2($A 比较符号 $B)
比较符号有下面这些:
大于:-gt, 例如 $A -gt $B
大于或等于:-ge
等于:-eq
小于:-lt
小于或等于:-le
不等于:-ne
还是看例子吧
例1;写一个脚本,生成两个随机数,比较其大小;显示大数;
bash有个内置变量:$RANDOM
#!/bin/bash
#
A=$RANDOM
B=$RANDOM
if [ $A -ge $B ]; then
echo "Max number is $A."
else
echo "Max number is $B."
fi


例2:写一脚本,随机生成一个整数,判定,显示其奇偶性
#!/bin/bash
#
A=$RANDOM
if [ $[$A%2] -eq 0 ]; then
echo "$A: Even"
else
echo "$A: Odd"
fi


(2) 字符测试
变量为字符时,进行字符测试。
bash字符测试时,从左至右逐字符比较
>: 大于
<: 小于
==: 等于 (前三者用的格式都是[ expression ])
=~: 判断左边的字符串是否能够被右边的模式所匹配;通常用于[[ expression ]];
[[ $opt1 =~ $opt2 ]],一般做行首、行尾锚定;不要加引号;


单目:
-z $STRING: 为空则为真,不空则为假;
-n $STRING: 为空则为假,不空则真;



例1:写一个脚本,判定用户的shell是否为bash
#!/bin/bash
#
Shell=`grep "^$1:" /etc/passwd | cut -d: -f7`
if [ -z $Shell ]; then
echo "No such user or User's shell is null."
exit 10
fi
if [ "$Shell" == "/bin/bash" ]; then
echo "Bash User."
Ret=0
else
echo "Not Bash User."
Ret=9
fi
exit $Ret


例2:通过参数传递一个字符串给脚本,如果传递的字符串为“memory”或“Memory”,就以MB为单位显示当前主机的内存信息
#!/bin/bash
#
if [[ $1 =~ [Mm]emory$ ]]; then
free -m
else
cat /proc/uptime
fi


相关阅读


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇iOS 7: 如何为iPhone 5S编译64位.. 下一篇Java通用工具类之按对象属性排序..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: