Shell编程之条件语句

1.条件测试

Shell环境根据命令执行后的返回状态值($?)来判断是否执行成功,当返回值为0(真true)时表示成功,返回值为非0值(假false)时表示失败或异常。
test命令
测试表达式是否成立,若成立返回0,否则返回其他数值
test 条件表达式
[ 条件表达式 ]

2.文件测试与整数测试

(1)文件测试

test 选项 文件/目录路径
test 选项 $变量
[ 选项 文件或目录 ]
[ 选项 $变量]

常用选项
-e 目录或文件是否存在(Exist)
-d 目录是否存在(Directory)
-f 文件是否存在(File)
-r 当前用户是否有读权限(Read)
-w 当前用户是否有写权限(Write)
-x 当前用户是否有执行权限(Excute)
-L 软连接数否存在


(2)整数测试

test 整数1 选项 整数2
[ 整数1 选项 整数2 ]
[[ 运算表达式 选项 整数 ]]

常用选项
-eq 等于 ==
-ne 不等于 !=
-gt 大于 >
-lt 小于 <
-le 小于等于
-ge 大于等于



3.字符串测试与逻辑测试

(1)字符串测试

test "字符串1" == "字符串2"     [ "字符串1" == "字符串2" ]      [[ "字符串1" == "字符串2" ]]    ##判断字符串是否相同
test "字符串1" != "字符串2"     [ "字符串1" != "字符串2" ]      [[ "字符串1" != "字符串2" ]]     ##判断字符串或变量是否不同
 [[ "字符串1" =~ "字符串2" ]]    ##判断字符串是否包含字符串2
test -z "字符串"      test -z "$变量"  [ -z "$变量" ]   ##判断字符串或变量是否为空
test -n "字符串"      test -n "$变量"  [ -n "$变量" ]   ##判断字符串或变量是否有字符串




(2)逻辑测试

[ 表达式1 ] 操作符 [ 表达式2 ]
命令1 操作符 命令2

[ 表达式1 ] && [ 表达式2 ]   [ 表达式1 -a 表达式2 ]    [[ 表达式1 && 表达式2 ]]       ##且,要求前后表达式条件都成立
[ 表达式1 ] || [ 表达式2 ]   [ 表达式1 -o 表达式2 ]    [[ 表达式1 || 表达式2 ]]       ##或,只需前后表达式条件成立一个即可

[ 表达式1 ] || 命令1             ##如果表达式1条件成立不会执行或运算符后面的命令1,如果表达式1条件不成立则会执行或运算符后面的命令1
[ 表达式1 ] && 命令1 || 命令2    ##如果表达式1条件成立则执行命令1,如果表达式1条件不成立则命令2

[ ! 表达式1 ]                   ##取反,如果表达式1条件成立则最终结果为条件不成立




-c:发送包的个数
-i:发送包的间隔时间
-W:超时时间
-w:多少秒后停止 ping 命令操作




4.if语句

(1)if单分支语句



(2)if双分支语句



lsof -i :80 &> /dev/null && echo "网站服务已在运行!" || systemctl start httpd ##执行更快

(3)if多分支语句




5.case分支语句



*注:判断进程是否正在运行的方法

systemctl status 进程服务
netstat -lntup | grep :端口进程名
netstat -lntup | grep 进程名
ss -lntup | grep :端口/进程名
lsof -i :端口
ps -elf | grep 进程名 | grep -v "grep" | grep -v "$$" | wc -l
pidof 进程名 | wc -w    #统计进程号大于0开启,0关闭
killall -0 进程名   #进程存在0

posted @ 2024-05-08 23:01  无敌小鲁班  阅读(18)  评论(0编辑  收藏  举报