一 if 的基本语法:
if [command];then
符合该条件执行的语句
elif [ command ];then
符合该条件执行的语句
else
符合该条件执行的语句
fi
二文件 / 文件夹 (目录) 判断
[ -b FILE ] | 如果 FILE 存在且是一个块特殊文件则为真。 |
[ -c FILE ] | 如果 FILE 存在且是一个字特殊文件则为真。 |
[ -d DIR ] | 如果 FILE 存在且是一个目录则为真。 |
[ -e FILE ] | 如果 FILE 存在则为真。 |
[ -f FILE ] | 如果 FILE 存在且是一个普通文件则为真。 |
[ -g FILE ] | 如果 FILE 存在且已经设置了 SGID 则为真。 |
[ -k FILE ] | 如果 FILE 存在且已经设置了粘制位则为真。 |
[ -p FILE ] | 如果 FILE 存在且是一个名字管道 (F 如果 O) 则为真。 |
[ -r FILE ] | 如果 FILE 存在且是可读的则为真。 |
[ -s FILE ] | 如果 FILE 存在且大小不为 0 则为真。 |
[ -t FD ] | 如果文件描述符 FD 打开且指向一个终端则为真。 |
[ -u FILE ] | 如果 FILE 存在且设置了 SUID (set user ID)则为真。 |
[ -w FILE ] | 如果 FILE 存在且是可写的则为真。 |
[ -x FILE ] | 如果 FILE 存在且是可执行的则为真。 |
[ -O FILE ] | 如果 FILE 存在且属有效用户 ID 则为真。 |
[ -G FILE ] | 如果 FILE 存在且属有效用户组则为真。 |
[ -L FILE ] | 如果 FILE 存在且是一个符号连接则为真。 |
[ -N FILE ] | 如果 FILE 存在 and has been mod 如果 ied since it was last read 则为真。 |
[ -S FILE ] | 如果 FILE 存在且是一个套接字则为真。 |
[ FILE1 -nt FILE2 ] | 如果 FILE1 has been changed more recently than FILE2, or 如果 FILE1 exists and FILE2 does not 则为真。 |
[ FILE1 -ot FILE2 ] | 如果 FILE1 比 FILE2 要老, 或者 FILE2 存在且 FILE1 不存在则为真。 |
[ FILE1 -ef FILE2 ] | 如果 FILE1 和 FILE2 指向相同的设备和节点号则为真。 |
三字符串判断
[ -z STRING ] | 如果 STRING 的长度为零则为真 ,即判断是否为空,空即是真; |
[ -n STRING ] | 如果 STRING 的长度非零则为真 ,即判断是否为非空,非空即是真; |
[ STRING1 = STRING2 ] | 如果两个字符串相同则为真 ; |
[ STRING1 != STRING2 ] | 如果字符串不相同则为真 ; |
[ STRING1 ] | 如果字符串不为空则为真, 与 - n 类似 |
四数值判断
INT1 -eq INT2 | INT1 和 INT2 两数相等为真 ,= |
INT1 -ne INT2 | INT1 和 INT2 两数不等为真 ,<> |
INT1 -gt INT2 | INT1 大于 INT1 为真 ,> |
INT1 -ge INT2 | INT1 大于等于 INT2 为真,>= |
INT1 -lt INT2 | INT1 小于 INT2 为真 ,<</div> |
INT1 -le INT2 | INT1 小于等于 INT2 为真,<= |
五复杂逻辑判断
-a | 与 |
-o | 或 |
! | 非 |
exp1: 如果 a>b 且 a
if (( a > b )) && (( a < c ))
或者
if [[ $a > $b ]] && [[ $a < $c ]]
或者
if [ $a -gt $b -a $a -lt $c ]
exp2: 如果 a>b 或 a
if (( a > b )) || (( a < c ))
或者
if [[ $a > $b ]] || [[ $a < $c ]]
或者
if [ $a -gt $b -o $a -lt $c ]
"||" 和 "&&" 在 SHELL 里可以用, 也就是第一个写成 if [ a>b && a
六举例
6.1
if 利用 read 传参判断
exp2: 查看分数
- #!/bin/bash
- #echo -n "please input your score:"
- #read score
- #echo "input score is $ score"
- read -p "please input a score:" score
- echo -e "your score [$score] is judging by sys now"
- if [ "$score" -ge "0" ]&&[ "$score" -lt "60" ];then
- echo "sorry,you are lost!"
- elif [ "$score" -ge "60" ]&&[ "$score" -lt "85" ];then
- echo "just soso!"
- elif [ "$score" -le "100" ]&&[ "$score" -ge "85" ];then
- echo "good job!"
- else
- echo "input score is wrong , the range is [0-100]!"
- fi
来源: http://www.bubuko.com/infodetail-2515328.html