[Linux] shell条件语句和if语句

一、条件语句

1.1 测试

test 测试文件的表达式是否成立

格式:test 条件表达式

           [ 条件表达式 ]

选项 作用
-d 测试是否为目录
-e 测试目录或文件是否存在
-a 测试目录或文件是否存在
-f 测试是否为文件
-r 测试当前用户是否有权限读取
-w 测试当前用户是否有权限写入
-x 测试当前用户是否有权限执行
-L 测试是否为软连接文件
test

[Linux] shell条件语句和if语句_第1张图片

1.2 比较整数

[ 整数1 -操作符 整数2 ] 公式
         -eq:第一个数等于第二个数

        -ne:第一个数不等于第二个数

        -gt:第一个数大于第二个数

        -lt:第一个数小于第二个数

        -le:第一个数小于或等于第二个数

        -ge:第一个数大于或等于第二个数

[Linux] shell条件语句和if语句_第2张图片

 1.3 字符串比较

= 字符串相同
!= 字符串不相同
-z 字符串内容为空
-n 字符是否存在

格式:

[ $a = $b ] 是否相同

[  $a  !=  $b ]  是否不相同

[  -z  $b ]   是否为空

[  -n  $a ] 字符是否存在

[Linux] shell条件语句和if语句_第3张图片

1.4 逻辑测试

格式:[ 表达式1 ] 操作符 [ 表达式2 ] ...

           命令1 操作符 命令2...

短路与

全真才为真;一假即为假

cmd1 && cmd2

短路或

 一真才即为真;全假才为假

cmd1 || cmd2

应用

cmd1 && cmd2 || cmd3

1.5 双中括号

用法

[[ == (通配符) ]]

[[ =~ (正则表达式) ]]

1.6 () {}

用途:都可以把命令放在一起,批量执行

二、if 语句

2.1 单分支语句

格式:

if 判断条件

then

命令语句

fi

[Linux] shell条件语句和if语句_第4张图片

[Linux] shell条件语句和if语句_第5张图片

2.2 双分枝语句

格式:
if 判断条件
then
命令
else
命令
fi

实验1 

[Linux] shell条件语句和if语句_第6张图片

[Linux] shell条件语句和if语句_第7张图片

 实验2

[Linux] shell条件语句和if语句_第8张图片 [Linux] shell条件语句和if语句_第9张图片

2.3  多分枝语句

格式:
if 判断条件
then
命令
elif 判断条件2
then
命令
..........
else
命令
fi

[Linux] shell条件语句和if语句_第10张图片

[Linux] shell条件语句和if语句_第11张图片 猜丁壳游戏

[Linux] shell条件语句和if语句_第12张图片

[Linux] shell条件语句和if语句_第13张图片

三、case分支语句

CASE 语句允许更清晰的脚本程序结构层次,常用于启动、重启或停止服务的脚本时,有些服务不提供此类控制脚本,您要编写 CASE 语句来编写。

case 语句主要用于以下情况:一个变量有多个值,需要对每个值执行不同的命令序列。这种情况与多分支 if 语句非常相似,只是 if 语句确定多个不同的条件,而 case 语句确定单个变量的不同值。

格式:
case $num in
条件判断1)
命令1
;;
条件判断2)
命令2
;;
条件判断3)
命令3
;;
........
*)
;;
echo " "
bash $0
;;
esac

[Linux] shell条件语句和if语句_第14张图片

[Linux] shell条件语句和if语句_第15张图片 利用case做个简易的Linux菜单

[Linux] shell条件语句和if语句_第16张图片

[Linux] shell条件语句和if语句_第17张图片[Linux] shell条件语句和if语句_第18张图片

[Linux] shell条件语句和if语句_第19张图片 试试关闭防火墙

[Linux] shell条件语句和if语句_第20张图片

[Linux] shell条件语句和if语句_第21张图片 关于 CASE 语句的说明

        必须以 "in "结束,每个模式必须以右括号") "结束。

        双分号";; "表示命令序列的结束。

        可以在模式字符串中使用方括号表示连续的范围,如"[0-9]",垂直条形符号"|"表示 "或",如 "A|B"。

        ==最后)表示默认模式,"*"相当于通配符 ===*。

你可能感兴趣的:(Linux,算法)