shell脚本常用脚本:if判断
str1 = str2 当两个串有相同内容、长度时为真
str1 != str2 当串str1和str2不等时为真
-n str1 当串的长度大于0时为真(串非空)
-z str1 当串的长度为0时为真(空串)
str1 当串str1为非空时为真
[ "2006.01.23" \> "2005.03.01" ] && echo dayu || echo budayu
int1 -eq int2 两数相等为真
int1 -ne int2 两数不等为真
int1 -gt int2 int1大于int2为真
int1 -ge int2 int1大于等于int2为真
int1 -lt int2 int1小于int2为真
int1 -le int2 int1小于等于int2为真
-r file 用户可读为真
-w file 用户可写为真
-x file 用户可执行为真
-f file 文件为正规文件为真
-d file 文件为目录为真
-c file 文件为字符特殊文件为真
-b file 文件为块特殊文件为真
-s file 文件大小非0时为真
-t file 当文件描述符(默认为1)指定的设备为终端时为真
-a 与
-o 或
! 非
上面的三种写在括号内,对应的 && || 写在中括号之间。例如,if [ "$a" eq 1 -o "$b" eq 2 ] && [ "$c" eq 3 ]
单分支结构
If [条件]
then
指令
fi
或
If [条件]; then
指令
fi
提示:分号相当于命令换行,上面两种语法相同,在脚本中一般使用第一种
脚本实例:
比较大小
[[email protected] if]# cat if01.sh
#!/bin/bash
#a=12
#b=11
read -p "pls input two number:" a b
if [ $a -gt $b ]
then
echo "yes $a > $b"
fi
if [ $a -lt $b ]
then
echo "yes $a < $b"
fi
if [ $a -eq $b ]
then
echo "yes $a = $b"
fi
方法二:
语法:
If [条件]
then
指令
else
指令
fi
双分支脚本实例:
比较大小
[[email protected] if]# cat if02.sh
#!/bin/bash
#a=12
#b=11
read -p "pls input two number:" a b
if [ $a -gt $b ]
then
echo "yes $a > $b"
else
if [ $a -lt $b ]
then
echo "yes $a < $b"
else
echo "yes $a = $b"
fi
fi
#传参做判断
[[email protected] if]# ./if04.sh
pls input two number:10
Usage :sh ./if04.sh num1 num2
[[email protected] if]# ./if04.sh
pls input two number:11 1 1
Usage :sh ./if04.sh num1 num2
[[email protected] if]# cat if04.sh
#!/bin/bash
#a=12
#b=11
read -p "pls input two number:" a b
if [ $# -ne 2 ]
then
echo "Usage :sh $0 num1 num2"
exit 1
elif [ $a -gt $b ]
then
echo "yes $a > $b"
elif [ $a -lt $b ]
then
echo "yes $a < $b"
else
echo "yes $a = $b"
fi
多分支结构
语法:
If [条件]
then
指令
elif [条件]
then
指令
elif [条件]
then
指令
elif [条件]
then
指令
… …
else
指令
fi
多分支脚本实例:
比较大小
[[email protected] if]# cat if03.sh
#!/bin/bash
#a=12
#b=11
read -p "pls input two number:" a b
if [ $a -gt $b ]
then
echo "yes $a > $b"
elif [ $a -lt $b ]
then
echo "yes $a < $b"
else
echo "yes $a = $b"
fi
传参判断方式计算:
[[email protected] if]# ./if05.sh 15 1f
第二个参数必须为数字
[[email protected] if]# ./if05.sh 1w 1
第一个参数必须为数字
[[email protected] if]# cat if05.sh
#!/bin/bash
a=$1
b=$2
#read -p "pls input two number:" a b
if [ $# -ne 2 ]
then
echo "Usage :sh $0 num1 num2"
exit 1
fi
[ -n "`echo $1 |sed 's/[0-9]//g'`" ] && echo "第一个参数必须为数字" && exit 1
[ -n "`echo $2 |sed 's/[0-9]//g'`" ] && echo "第二个参数必须为数字" && exit 1
if [ $a -gt $b ]
then
echo "yes $a > $b"
elif [ $a -lt $b ]
then
echo "yes $a < $b"
else
echo "yes $a = $b"
fi
原文地址:http://blog.51cto.com/xianlei/2088006