bash条件判断基础adsawq1`1nn

判断的作用

  • 判断后续操作的提前条件是否满足
  • 如果满足执行一种命令
  • 不满足则执行另一种指令

条件测试类型:

  • 整型测试
  • 字符测试
  • 文字测试

整数测试:比较两个整数谁大谁小,是否相等;

二元测试:

num1 操作符 num2

-eq: 等于

-ne: 不等于

-le:小于等于

-ge:大于等于

-lt:小于

-gt: 大于


字符测试:比较两个字符串是否相等;

双目录

>: 大于

<: 小于

==: 等于,等值比较

=~: 左侧是字符串,右侧是一个模式,判定左侧的字符串能否被右侧的模式所匹配; 通常只\[ ]中使用,模式中可以使用行首、行尾锚定符;但模式不要加引导

!=, <>: 不等于

单目录

-n 字符串: 字符串是否不空,不空为真,空则为假

-z 字符串: 字符串是否为空,空则为真,不空则假


文件测试:测试某个文件是否具有读权限、写权限、执行权限等;

单目测试:

-e file : 测试文件是否存在

-a file : 测试文件是否存在

-f file : 测试是否为普通文件

-d : 测试是否为目录文件

-b somefile : 测试文件是否存在并且是否为一个块设备文件

-c somefile : 测试文件是否存在并且是否为一个字符设备文件

-h|-L somefile : 测试文件是否存在并且是否为符号链接文件

-p somefile : 测试文件是否存在并且是否为管道文件:

-S somefile : 测试文件是否存在并且是否为套接字文件:

-r somefile: 测试其有效用户是否对此文件有读取权限

-w somefile: 测试其有效用户是否对此文件有写权限

-x somefile: 测试其有效用户是否对此文件有执行权限

-s somefile: 测试文件是否存在并且不空

双目测试:

file1 -nt file2 : 测试file1是否比file2

file1 -ot file2 : 测试file1是否比file2

file1 -ef file2 : 测试file1和file2是否引用同一个文件


bash编程之:逻辑运算:

与运算:

真 && 真 = 真

真 && 假 = 假

假 && 真 = 假

假 && 假 = 假

或运算:

真 || 真 = 真

真 || 假 = 真

假 || 真 = 真

假 || 假 = 假

非运算:

!真 = 假

!假 = 真


bash编程之:组合条件测试

与:条件1 &&条件2

条件1为假,则最终结果一定为假,否则,条件2不予执行

条件1为真,则最终条件结果决于后面条件,因此,条件2必须执行

或:条件1 ||条件2

条件1为真,则最终结果一定为真,否则,条件2不予执行

条件1为假,则最终条件结果决于后面条件,因此,条件2必须执行

非:

与的优先级大于或,或的优先级大于非


bash编程之:条件测试方法

test 表达式

测试表达式

\[ 测试表达式 \]


bash编程之:if条件判断使用:

单分支:

if 条件; then

分支1;

fi

双分支:

if 条件; then

分支1;

else

分支2;

fi

多分支:

if 条件; then

分支1;

elif 条件2; then

分支2;

elif 条件3; then

分支3;

...

else

分支n;

fi


bash编程之:命令引用:

1.引用命令的执行结果:使用`COMMAND`或$(COMMAND)

2.引用命令执行是否成功的状态结果:一定是直接执行命令,此时需要执行结果重定向至/dev/null

bash编程之:脚本自动退出

exit n

0表示成功(Zero - Success)

非0表示失败(Non-Zero - Failure)

2表示用法不当(Incorrect Usage)

127表示命令没有找到(Command Not Found)

126表示不是可执行的


用户和脚本进行交互:

位置变量

read命令

复制代码
read -p "参数" 变量名

位置参数轮替:

#!/bin/bash

echo "参数列表:$#"

echo "参数列表:$@"

echo""

shift 2

echo "参数列表:$#"

echo "参数列表:$@"

相关推荐
小羊没烦恼!3 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
伞伞悦读3 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
C语言小火车3 天前
C/C++ 为什么需要编译器?
开发语言·c++
霍霍的袁3 天前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
孙启超3 天前
【AI开发之Rust】第 11 课:智能指针与内部可变性
开发语言·后端·rust
此生决int3 天前
深入理解C++系列(20)——C++11(下)
开发语言·c++
CoderYanger3 天前
A.每日一题:835. 图像重叠
java·开发语言·程序人生·leetcode·面试·职场和发展·学习方法
伞伞悦读3 天前
【第37期】Python JSON 与配置详解:序列化、反序列化、嵌套结构和配置文件
开发语言·python·json
CCCCCCCCharlie3 天前
Linux进程控制四大核心操作
linux·开发语言
Brilliantwxx3 天前
【STM32】 SPI Flash 驱动开发实战:阻塞模式驱动 W25Q64(含工程代码)
开发语言·stm32·单片机·嵌入式硬件