shell脚本的条件测试

命令结果判定

&& :在命令执行后如果没有任何报错时会执行符号后面的动作

|| :在命令执行后如果命令有报错会执行符号后的动作

条件判断

test 语句

[],[[]],(()) 语句

[[]] 可以支持的表达式更多,是最常用的语句

判断表达式

文件判断

-a / -e 文件 ##检测文件是否存在

-b 文件 ##检测文件是否存在且为块设备文件,存在则结果为0

-c 文件 ##检测文件是否存在且为字符设备文件,存在则结果为0

-L 文件 ##存在且为链接文件为真

-d 文件 ##文件存在且为目录为真

-f 文件 ##文件存在且为普通文件为真

-S 文件 ##文件存在存在且大小>0为真

-u 文件 ##文件是否设置了SUID权限位,设置了SUID则结果为0

-r 文件 ##文件存在且可读为真

-w 文件 ##文件存在且可写为真

-x 文件 ##文件存在且可执行为真

f1 -nt f2 -nt为newer than ##文件f1比f2新为真

f1 -ot f2 -ot为older than ##文件f1比f2旧为真

f1 -ef f2 -ef为等于 ##文件是否在相同的设备有相同的节点号

# cd /mnt/

-a 判断文件是否存在

-d 判断文件类型

-S 判断文件是否存在,且不为空

-x 判断文件权限,是否可以执行

-ot 判断文件新旧

# [ "lee" -ot "lee1" ] && echo yes || echo no

-ef 判断节点号是否相同

节点号不同运行结果:

# rm -fr test

# ln lee test 【创建硬链接】

# ls -i lee test 查看节点号

# [ "/mnt/lee" -ef "/mnt/test" ] && echo yes || echo no


字符串测试表达式

检测变量是否为空

# a=lee

比较字符

# b=test

整数测试表达式

判断相等

# a=1 ; b=1


对比大小

逻辑操作符

练习:判断输入字符,输入空报错,输入exit退出,判断是否为文件或目录

# vim file.sh 【配置文件】

#!/bin/bash

ACTIO()

{

read -p "输入字符: " target

#退出

"$target" = "exit" \] \&\& { echo bye exit 0 } # 1. 检测变量是否为空 \[ -z "$target" \] \&\& { echo "错误:变量不能为空" target } # 2. 检测文件/目录是否存在 \[ -e "$target" \] \|\| { echo "错误,目录不存在" target } # 3. 判定是否是文件 \[ -f "$target" \] \&\& { echo "是个文件" target } # 4. 判定是否是目录 \[ -d "$target" \] \&\& { echo "是一个目录" target } } ACTIO 【最后要运行函数】 ****# bash file.sh**** 【sh不能运行时,bash可以运行脚本】

练习:猜数字判定

#!/bin/bash

NUM()

{ NUM=$[RANDOM%10] } 【设置随机数0~9】

GAUSE()

{

read -p "输入数字0~9:" sum

1,检测变量是否为空

-z "$sum" \] \&\& { 【判断输入是否为空】 echo "错误:输入不能为空" GAUSE } #2,检测输入 (( $sum \> 10 \|\| $sum \< 0 )) \&\& { 【判断输入是否在范围内】 echo "必须是0\~9:" echo $NUM GAUSE } #3,循环运行 \[ "$sum" -eq "$NUM" \] \&\& { 【判断是否猜对,没猜对会退出】 echo "猜对了" read -p "是否继续:(y/n)" AAA \[ "$AAA" = "y" \] \&\& { NUM GAUSE }\|\|{ echo bye exit } } } NUM GAUSE

相关推荐
chemddd几秒前
excel 工作需要会的
excel
船长@Quant14 分钟前
数学视频动画引擎Python库 -- Manim Voiceover 语音服务 Speech Services
python·数学·manim·动画引擎·语音旁白
Chef_Chen22 分钟前
从0开始学习R语言--Day39--Spearman 秩相关
开发语言·学习·r语言
不学会Ⅳ30 分钟前
Mac M芯片搭建jdk源码环境(jdk24)
java·开发语言·macos
好开心啊没烦恼2 小时前
Python 数据分析:计算,分组统计1,df.groupby()。听故事学知识点怎么这么容易?
开发语言·python·数据挖掘·数据分析·pandas
lljss20202 小时前
Python11中创建虚拟环境、安装 TensorFlow
开发语言·python·tensorflow
空中湖2 小时前
tensorflow武林志第二卷第九章:玄功九转
人工智能·python·tensorflow
醇氧3 小时前
【wps】 excel 删除重复项
excel·wps
CodeCraft Studio4 小时前
CAD文件处理控件Aspose.CAD教程:使用 Python 将绘图转换为 Photoshop
python·photoshop·cad·aspose·aspose.cad
Python×CATIA工业智造5 小时前
Frida RPC高级应用:动态模拟执行Android so文件实战指南
开发语言·python·pycharm