在shell编程中用于条件测试的一些语句,例如if条件语句、test条件语句的用法. shell条件测试语句 在shell编程中,当使用if语句时,总是涉及到条件的判断。
本文详细介绍下shell编程中有关条件判断的各种情况。
复制代码代码示例:
if ls sam* &> /dev/null; then
echo "Hi,it's here." fi
当条件为语句时,直接跟在if后面,如果语句执行成功,返回0,表示真,然后执行语句块中的语句。
复制代码代码示例:
if grep "^hive" /etc/passwd; then
grep "^hive" /etc/passwd | cut -d: -f1,3,7 fi
2. 条件为变量判断时
大于:-gt, 例如 $A -gt $B
大于或等于:-ge 等于:-eq 小于:-lt 小于或等于:-le 不等于:-ne
例1;写一个脚本,生成两个随机数,比较其大小;显示大数;
复制代码代码示例:
#!/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) 字符测试
复制代码代码示例:
#!/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
(3) 文件测试
-f: 测试其是否为普通文件,即ls -l时文件类型为-的文件;
-d: 测试其是否为目录文件,即ls -l时文件类型为d的文件; -e: 测试文件是否存在;存在为真,否则为假; -r: 测试文件对当前用户来说是否可读; -w: 测试文件对当前用户来说是否可写; -x: 测试文件对当前用户来说是否可执行; -s: 测试文件大小是否不空,不空则真,空则假
例1:
复制代码代码示例:
#!/bin/bash
# SvcName=`basename $0` LockFile="/var/lock/subsys/$SvcName" if [ $# -lt 1 ]; then echo "Usage: $SvcName {start|stop|restart|status}" exit 3 fi if [ $1 == 'start' ]; then if [ -e $LockFile ]; then echo "$SvcName is running." else touch $LockFile &> /dev/null echo "Starting $SvcName successfully." fi elif [ $1 == 'stop' ]; then if [ -e $LockFile ];then rm -f $LockFile &> /dev/null echo "Stopping $SvcName finished." else echo "$SvcName is stopped yet." fi elif [ $1 == 'restart' ]; then rm -f $LockFile &> /dev/null touch $LockFile &> /dev/null echo "Restarting $SvcName successfully." elif [ $1 == 'status' ]; then if [ -e $LockFile ]; then echo "$SvcName is running." else echo "$SvcName is stopped." fi else echo "Usage: $SvcName {start|stop|restart|status}" exit 4 fi
3. 条件判断中的组合符
复制代码代码示例:
#!/bin/bash
read -p "please input a number: " num if [ $num -gt 1 -a $num -lt 100 ];then echo "available" else echo "invalid input" fi
4. 短路运算符 |