Linux之shell脚本的条件语句

一、测试

1.1测试

格式
[操作符 文件或目录]
-d:测试是否为目录(Directory)
-e:测试目录或文件是否存在(Exist)
-f:测试是否为文件(File)
-r:测试当前用户是否有权限读取(Read)
-w:测试当前用户是否有权限写入(Write)
-x:测试当前用户是否有权限执行(eXcute)

1.2比较整数数值

格式
[整数1 操作符 整数2]
-eq:等于(Equal)
-ne:不等于(Not Equal)
-gt:大于(Greater Than)
-lt:小于(Lesser Than)
-le:小于或等于(Lesser or Equal)
-ge:大于或等于(Greater or Equal)

1.3字符串

格式

[ 字符串1 == 字符串2 ]  是否相同

[ 字符串1 != 字符串2 ]  是否不相同

[ -z  字符串 ]  是否为空

[ -n  字符串 ]  字符是否存在
==:字符串内容相同
!=:字符串内容不同,! 号表示相反的意思
-z:字符串内容为空
-n: 字符是否存在

1.4逻辑测试

格式
格式1:[ 表达式1 ]   操作符 [ 表达式2 ]... 
格式2:命令1  操作符  命令2 ... 
常见条件
-a 或 &&:逻辑与,“而且”的意思全真才为真
-o 或 ||:逻辑或,“或者”的意思一真即为真
!:逻辑否
且 与
第一个要真  第二个也为真才能是真
如果第一个为假,整个为假不用执行下个操作
[`id -u` -eqo ]&&
echo "该用户为超级管理员"
或
一真即为真
如果第一个为真  那么不用执行第二个
第二个为假  才需要执行第二个

1.5双中括号[[]]

格式
[[ expression ]] 用法
== 左侧字符串是否和右侧的PATTERN相同
 注意:此表达式用于[[ ]]中,PATTERN为通配符
=~ 左侧字符串是否能够被右侧的正则表达式的PATTERN所匹配
 注意: 此表达式用于[[ ]]中;扩展的正则表达式

1.6() {}

格式
(CMD1;CMD2;...)和 {空格CMD1;CMD2;...; } 都可以将多个命令组合在一起,批量执行

二、if语句

2.1分支结构

2.1.1单分支

单分支

if 判断条件;

then  条件为真的分支代码

fi

2.1.2双分支

双分支

if 判断条件; then
 条件为真的分支代码

else
 条件为假的分支代码

fi

2.1.3多分支

多分支

if 判断条件1
then
 条件1为真的分支代码

elif 判断条件2
then
 条件2为真的分支代码

elif 判断条件3;then
 条件3为真的分支代码

...
else
 以上条件都为假的分支代码

fi  #结束标志

2.2case

格式
case $input in

PAT1)
 分支1
 ;;

PAT2)
 分支2
 ;;

...
*)
 默认分支
 ;;

esac #表示case语句块的结束

2.3echo

echo -n   表示不换行输出
echo -e   表示输出转义符
常用的转义符
posted @ 2023-08-11 19:06  德国南部之星  阅读(58)  评论(0)    收藏  举报