循环语句
1. 基本语法
1 | if [ command ];then |
2. 命令和参数
条件表达式要放在方括号之间,并且两端要有空格
2.1. 字符串判断
[ -z STRING ]
,[ STRING1 ]
: STRING 长度为零则为真[ -n STRING ]
: STRING 长度非零则为真[ STRING1 = STRING2 ]
: 两个字符串相同则为真[ STRING1 != STRING2 ]
: 字符串不相同则为真
2.2. 数值判断
[ INT1 -eq INT2 ]
:=
[ INT1 -ne INT2 ]
:<>
[ INT1 -gt INT2 ]
:>
[ INT1 -ge INT2 ]
:>=
[ INT1 -lt INT2 ]
:<
[ INT1 -le INT2 ]
:<=
2.3. 文件/文件夹(目录)判断
[ -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 指向相同的设备和节点号则为真
2.4. 布尔运算符
!
: 非运算-o
: 或运算,有一个表达式为 true 则返回 true, 比如[ $a -lt 20 -o $b -gt 100 ]
返回 true-a
: 与运算,两个表达式都为 true 才返回 true, 比如[ $a -lt 20 -a $b -gt 100 ]
返回 false