shell 编程条件语句

发布时间 2023-11-21 20:09:46作者: citywalk

shell

test   测试

0为真

test -a /etc/fstab

echo $?

test -e /etc/fstab

echo $?

 

-a,-e #测试文件是否存在

-a有bug #取反会有变化

test +选项 对象参数

test -f #只看文件
-r #是否有读的权限
-w #是否有写的权限
-x #是否有执行的权限
-d #目录
-f #文件

[ -e /etc/fstab ];echo $?

[ -e /etc/fstab ] =test -e /etc/fstab

 

linux 中判断命令

test

[]

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

 

 

数值比较运算符

-eq #等于
-gt #大于
-ge #大于等于
-ne #不等于
-lt #小于
-le #小于或等于

 

字符串比较

 

[[ == ]] #判断两字符是否相等用双等号


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

 

 

逻辑测试

短路与 #全真才为真

cmd1 && cmd2 #看成一个整体

1为真2为真 ---> 真

一假即为假

短路或 #一真即为真

全假才为假

cmd1 || cmd2

 

 

 

 

 

 

设置ping的脚本

#ping三个包,等待2秒   将多余垃圾丢到null  ,如成功就online ,失败就offline

 

 

 

实验  如果你是超级管理员   /data/test  文件 不存在    就创建这个文件

 -o  或 -a 且

 

( ) { } 拓展

 #() 相当于 cd /opt  ls   cd -        { }相当于 cd /opt  ls

 

if语句的结构

if 判断条件

单分支

if [ 5 gt 4]
then
touch /etc/test
echo true
fi

if #判断条件

theh #条件为真的分支代码

 

双分支

if [`id-u` -eq 0]
then
echo "你是超级管理员"
else
echo "你不是超级管理员"
fi


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

else #条件为假的分支代码

 

多分支

if 判断条件1
then #命令序列
#条件1为真的分支代码

elif 判断条件2
then# 命令序列
#条件2为真的分支代码

elif 判断条件3;
then #命令序列
#条件3为真的分支代码
.......................
else
#命令序列
fi

 

 

 

 

 

 

 

 

 

 

实验 分数实验

 

 

 

 

实验 布 剪子 锤

 

 

 

 

时间

 

 

 #创建个时间文件

 

实验 创建用户 生成随机密码

 

 

 

 

 

case 条件判断

 

case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac

read -p i

case $i in
PAT1)
分支1
;;
PAT2)
分支2
;;
...
*)
默认分支
;;

case支持glob风格的通配符:
* #任意长度任意字符
? #任意单个字符
[0-9] 指定范围内的任意单个字符
|   或者,如: a|b

 

 

 

 

分数实验

 

 

 

 

 

 输入数字表示数字,输入字母表示字母,输入特殊字符表示特殊字符

 

 

 

 简易工具箱实验

 

 #bash 0循环。不退出

 

 

 

输入yes,Yes, y 或者n no  No  都可以输出yes or no

 

 

 

 

脚本运行编译安装+systemd