if
数值比较
n1 -eq n2 | n1 = n2 |
n1 -ge n2 | n1 >= n2 |
n1 -gt n2 | n1 > n2 |
n1 -le n2 | n1 <= n2 |
n1 -lt n2 | n1 < n2 |
n1 -ne n2 | n1 != n2 |
字符串比较
大于号和小于号必须转义,否则shell会把他们当做重定向符号,把字符串值当做文件件名
大于和小于顺序和sort命令所采用的的不同
str1 = str2 | |
str1 != str2 | |
str1 > str2 | |
str1 < str2 | |
-n str1 | 判断str的长度是否非0 |
-z str1 | 判断str的长度是否为0 |
文件比较
-d file | 检查file是否存在并是一个目录 |
-e file | 检查file是否存在 |
-f file | 检查file是否存在并是一个文件 |
-r file | 检查file是否存在并可读 |
-s file | 检查file是否存在并非空 |
-w file | 检查file是否存在并可写 |
-x file | 检查file是否存在并可执行 |
-O file | 检查file是否存在并属当前用户所有 |
-G file | 检查file是否存在并且默认组与当前用户相同 |
file1 -nt file2 | 检查file1是否比file2新 |
file1 -ot file2 | 检查file1是否比file2旧 |
判断文件是否存在且为文件夹
#! /bin/bash jump_directory=/shell if [ -d $jump_directory ] then echo "the $jump_directory directory exists" cd $jump_directory ls else echo "the $jump_directory is not exists" fi [root@iZbp11f8g5h7oozejqy6k6Z shell]# sh test1.sh the /shell directory exists test1.sh
if-then高级特性
用于数学表达式的双括号
用于高级字符串处理功能的双方括号
双括号:
(( expression ))
#! /bin/bash val1=10 if (( val1 ** 2 > 90 )) then (( val2 = $val1 ** 2)) echo $val2 fi
双方括号
[[ expression ]]
#! /bin/bash if [[ $USER == r* ]] then echo "hello $USER" else echo "i do not know you" fi
case
case variable in
pattern1 | pattern2) commands1;;
pattern3) commands2;;
*) default commadns3;;
esac