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

posted @ 2022-05-05 17:20  Tatataaa  阅读(4)  评论(0编辑  收藏  举报