语法:
if 条件then指令集
else指令集
fi
特殊写法:
if [ -f "$file1" ]; then echo 1; else echo 0; fi
相当于:
[ -f "$file1" ] && echo 1 || echo 0
多分支结构:
if 条件then指令
elif 条件then指令
else指令
fiif 条件then指令
elif 条件then指令
elif 条件then指令
elif 条件then指令
else指令
fi
示例1:双分支if条件语句命令实现传参方式两个整数比较大小(可用条件小于或者大于等于)
[root@abc ~]# cat if21.sh
#!/bin/bashif [ $# -ne 2 ]thenecho "USAGE: $0 NUM1 NUM2"exit 1
fia=$1
b=$2expr $a + 0 &>/dev/null
RETVAL1=$?
expr $b + 0 &>/dev/null
RETVAL2=$?if [ $RETVAL1 -ne 0 -o $RETVAL2 -ne 0 ]thenecho "Please input two integer number again."exit 2
fiif [ $a -lt $b ]thenecho "$a is less than $b"
elif [ $a -gt $b ]thenecho "$a is greater than $b"
elseecho "$a is equal to $b"
fiexit 0
执行结果测试:
[root@abc ~]# sh if21.sh 20 20
20 is equal to 20
[root@abc ~]# sh if21.sh 10 20
10 is less than 20
[root@abc ~]# sh if21.sh 20 10
20 is greater than 10[root@abc ~]# sh if21.sh 1 s
Please input two integer number again.
[root@abc ~]# sh if21.sh s 1
Please input two integer number again.
对一段代码要进行充分的测试。要有点测试思想。
判断字符串是否为数字的多种思路:
1)使用sed加正则表达式。
删除一个字符串中的所有数字,就是把数字过滤掉,看字符串的长度是否为0,如果不为0,则说明不是整数。
[ -n "`echo chang123 | sed 's/[0-9]//g'`" ] && echo chars || echo int
2)变量的子串替换加正则表达式:
num=chang123
[ -z "`echo ${num//[0-9]/}"`" ] && echo int || echo char
这个地方需要复习下子串替换的内容。
num=521
[ -n "$num" -a "$num" = "${num//[^0-9]/}" ] echo int || echo chars
3) 通过expr计算判断:
expr chang + 1 &>/dev/null
[ $? -eq 0 ] && echo int
4)利用=~符号判断:
[[ chang123 =~ ^[0-9]+$ ]] && echo int || echo char
5)利用bc判断字符串是否为整数:
echo chang123|bc
echo 123|bc