shell脚本之条件语句

条件语句

linux测试

test 测试

测试表达式是否成立(用echo $? 检测是否正确)

语法:test [选项  参数]

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

比较整数数值

语法:[整数1 操作符 整数2 ]

常用操作符

-eq: 等于(Equal)

-ne: 不等于(Not Equal)

-gt: 大于(Greater Than)

-lt: 小于(Lesser Than)

-le: 小于或等于(Lesser or Equal)

-ge: 大于或等于(Greater or Equal)

字符串比较

语法:

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

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

= :等于

!= :不等于(取反)

-z :字符串内容为空

逻辑测试(短路运算)

短路与:&&

全真才为真,一假即为假

短路或:||

一真即为真,全假才为假

建议&&放在||前面执行

逻辑否: !

取反

格式:cmd1 && cmd2 ||cmd3

shell脚本之条件语句_第1张图片

[   ]  和   [[   ]]

[    ]

[[     ]]   加强版的单个[   ],可以支持正则表达式和通配符

[ -a ] :且

[ -o ] :或

[[ == ]]:等于号右边通配符

[[ =~ ]]:等于号右边是正则表达式

( )、{ }区别

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

( ):会开启子shell

  { }:不会开启子shell,在当前环境下运行

awk

是一种文本处理工具,它可以用于从文件或标准输入中提取和操作数据。它以行为单位读取输入,并根据指定的规则进行处理

if语句的结构

单分支

语法:

#!/bin/bash
if [ 5 -gt 4 ]    #如果5大于4
then
touch hyh         #如果5大于4,则创建hyh文件
fi

双分支

必须if开头,fi结尾

if  
#判断条件
then 
#命令语句
else 
#命令语句(如果第二条不能满足)则执行
fi
​

多分支(满足条件直接执行命令,如果不满足往下继续判断条件)

if  判断条件1
then
#命令序列(需要执行的操作)
elif判断条件2
then(需要执行的操作)
elif判断条件3
then
…………(依次类推,可设置多个条件)
fi

实验示例:

shell脚本之条件语句_第2张图片

shell脚本之条件语句_第3张图片

case语句架构

case支持通配符

*:任意长度任意字符

<<任意字符:定位符,写完尾部也要加,并且不能加空格

case的语法格式

case   关键字   in
​
条件判断1)
​
命令序列1 
​
;;
​
条件判断2)
​
命令序列2)
​
;;
​
…………
​
…………
​
*)
​
默认命令序列*
​
;;
​
esac

#!/bin/bsah
read -p "请输入你的分数:"  num
case $num  in
100)
echo "满昏"
;;
8[0-9]|9[0-9])
echo "不错"
;;
[1-9]|[1-7][0-9]
echo "还需努力"
;;
0)
echo "天才,神中神"
;;
*)
echo "输入有误,重新输入"
bash $0
;;
esac
​

你可能感兴趣的:(linux,算法,运维)