linux shell脚本 条件语句

发布时间:2024年01月24日

test

????????测试文本的表达式 是否成立

? ? ? ? 格式: test ???条件表达式

? ? ? ? 格式: [? ? 条件表达式? ? ]? ?([] 内要空格 ,不然不生效)

? ? ? ? 如何测试?

? ? ? ? ? ? ? ?[ 操作符? 文件或目录 ]

? ? ? ? ? ? ? ? echo $?

? ? ? ? ? ? ? ? 返回值是0 正确,返回值非0 不正确

? ? ? ? 操作符:

? ? ? ? ? ? ? ? -d? 测试是否为目录

? ? ? ? ? ? ? ? -a?测试目录或文件是否存在

? ? ? ? ? ? ? ? -e 测试目录或文件是否存在(推荐使用这个,-a有bug)

? ? ? ? ? ? ? ? -f? 测试是否是文件

? ? ? ? ? ? ? ? -r? 测试当前用户是否有权限读取

? ? ? ? ? ? ? ? -w 测试当前用户是否有权限写入

? ? ? ? ? ? ? ? -x 测试当前用户是否有权限执行

? ? ? ? ? ? ? ? -L 测试是否是软连接文件

比较整数数值

? ? ? ? ? ? ? ??[整数1? ? 操作符? ? ?整数2?]?

? ? ? ? ? ? ? ? echo $?

? ? ? ? ? ? ? ? 0正确? ?非0 不正确

? ? ? ?????????操作符

? ? ? ? ? ? ? ? -eq? ? ? ?等于

? ? ? ? ? ? ? ? -ne? ? ? ?不等于

? ? ? ? ? ? ? ? -gt? ? ? ? 大于

? ? ? ? ? ? ? ? -lt? ? ? ? ?小于

? ? ? ? ? ? ? ? -le? ? ? ? 小于等于

? ? ? ? ? ? ? ? -ge? ? ? ? 大于等于

字符串比较

? ? ? ? 常用的测试操作符

? ? ? ? ? ? ? ?=? ? ? ? 字符串内容相同

? ? ? ? ? ? ? ?!=? ? ? ? 字符串内容不同,!表示相反的意思

? ? ? ? ? ? ? ?-z? ? ? ? 字符串内容是否存在

? ? ? ? ? ? ? ?-n? ? ? ? 字符是否存在

? ? ? ? 格式

? ? ? ? ? ? ? [ 字符串1 操作符? 字符串2? ]?

???????????????echo $?

? ? ? ? ? ? ? ? 0正确? 非0不正确

逻辑测试

? ? ? ? 常见条件

? ? ? ? ? ? ??-a或&&:? 逻辑与,"而且"的意思?两边条件为真才为真

? ? ? ? ? ? ? -o或 | |:逻辑或,"或者"的意思 有一个条条件为真就为真

? ? ? ? ? ? ? !:逻辑否

? ? ? && 与

? ? ? ? a && b? ? ? ? ?同时满足a和b命令的要求,才会返回正确,有一方不满足,便是假

? ? ? | | 或

? ? ? ? a | | b? ? ? ? ? ?只要有一个结果为真,结果比为真。a结果为真,总结果肯定为真,

? ? ? ? ? ? ? ? ? ? ? ? ? ? 因此不需要执行b。a结果为假,b就需要进行判断,才能得到真正的结果

? ? ? ?a && b | | c? ? a如果为真,则执行b 就不会执行c? ?a如果为假,就不会执行b,就需要执行c

双中括号

? ? ? ? ????????[ [ 表达式 条件? 表达式 ] ]

? ? ? ? ????????条件 ????????==? ? ? ? 通配符

????????????????? ??? ??????????=~? ? ? ? 正则表达式

() {}????????

? ? ? ? ? ? (a,b....) 和 {a,b....}? 都可以将命令组合在一起,批量执行

? ? ? ? ? ?()会开启子进程? {}不会开启子进程

if语句

? ? ? ? ? ? ?分支结构

? ? ? ? ? ? ? ? ?单分支

? ? ? ? ? ? ? ? ? ? ? if 判断条件;

? ? ? ? ? ? ? ? ? ? ? then? ? ? ?

??????????????????????条件为真的分支代码

? ? ? ? ? ? ? ? ? ? ? fi

? ? ? ? ? ? ? ? 双分支

? ? ? ? ? ? ? ? ? ? ? if 判断条件;

? ? ? ? ? ? ? ? ? ? ? ? then

? ? ? ? ? ? ? ? ? ? ? ?条件为真的分支代码

? ? ? ? ? ? ? ? ? ? ? ? else

? ? ? ? ? ? ? ? ? ? ? ? 条件为假的分支代码

? ? ? ? ? ? ? ? ? ? ? ? fi

? ? ? ? ? ? ? ? 多分支

? ? ? ? ? ? ? ? ? ? ? ?if 判断条件1;

? ? ? ? ? ? ? ? ? ? ? ? ?then

? ? ? ? ? ? ? ? ? ? ? ? 条件1为真的分支代码

? ? ? ? ? ? ? ? ? ? ? ?elif 判断条件2;

? ? ? ? ? ? ? ? ? ? ? ? ? then

? ? ? ? ? ? ? ? ? ? ? ? 条件2为真的分支代码

? ? ? ? ? ? ? ? ? ? ? ?elif 判断条件3;

? ? ? ? ? ? ? ? ? ? ? ? ? then

? ? ? ? ? ? ? ? ? ? ? ? 条件3为真的分支代码

? ? ? ? ? ? ? ? ? ? ? ? ....

? ? ? ? ? ? ? ? ? ? ? ? else

? ? ? ? ? ? ? ? ? ? ? ? ? ?以上条件都不符合,则执行的代码

? ? ? ? ? ? ? ? ? ? ? ? fi

case语句

? ? ? ? 格式

? ? ? ? ? ? ?read? -p? ? i

????????? ? case? $i? ? in

? ? ? ? ? ? ? ?PAT1)? ? ? ??

? ? ? ? ? ? ? ? ? ?分支1

? ? ? ? ? ? ? ? ????;;

? ? ? ? ? ? ? ?PAT2)

? ? ? ? ? ? ? ? ? ?分支2

? ? ? ? ? ? ? ? ? ?;;

? ? ? ? ? ? ? ? ...

? ? ? ? ? ? ? ? *)

? ? ? ? ? ? ? ? ;;

? ? ? ? ? ? ? ? easc

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

echo

? ? ?? ? ?echo? ?"abcdfg"??

? ? ? ? ? ? ?abcdfg

? ? ? ? ? ? 输出abcdfg

? ? ? ? 选项

? ? ? ? ? ? ? ?-n? 不换行输出

? ? ? ? ? ? ? ?-e? ?表示输出转义符

? ? ? ? ? ??

" " 内的可用选项

\r光标移至行首,并且不换行
\s当前shell的名称,如bash
\t插入Tab键,制表符
\n输出换行
\f换行,但光标仍停留在原处
\表示插入"\"本身转义
\b表示退格 不显示前一个字符
\c抑制更多的输出或不换行

???????????????? ? ? ? ? ? ?

????????

??????????????????

? ? ?

文章来源:https://blog.csdn.net/m0_66372974/article/details/135821052
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。