首页 > 系统相关 >shell条件语句

shell条件语句

时间:2024-05-14 16:22:09浏览次数:12  
标签:语句 shell ## 是否 命令 判断 条件 字符串 bash

一、测试

文件测试test

test的语法
test 条件表达式
[ 条件表达式 ] 
 
test 选项 文件
-d :判断是否是目录(Directory)
-f :判断是否是普通文件(File)
-b :判断是否是块设备(block)
-c :判断是否是字符设备
-e :判断是否存在  (Exist)
-a :判断是否存在  
-r :判断是否有读的权限(Read)
-w :判断是否有写的权限(write)
-x :判断是否有执行的权限(excute)
-L: 测试是否为软连接文件

test表示

 中括号表示

 整数比较[]

[ 整数1 -操作符 整数2 ] 公式
-eq :表示等于
-ne :表示不等于
-gt :表示大于
-ge :表示大于等于
-lt :表示小于
-le :表示小于等于

 判断磁盘空间是否充足

 字符串比较

= : 表示字符串相同
!= :表示字符串内容不相同
-z :表示字符串内容为空
-n :表示字符串存在
语法格式:
[ 字符串1 = 字符串2 ] ##判断两个字符串是否相同
[ 字符串1 != 字符串2 ] ##判断两个字符串是否不相同
[ -z 字符串 ] ##判断字符串是否为空或是否存在,(存在且空也为不存在)

逻辑测试(短路运算)

短路运算
与:&&(相当于电路串联)
格式1:[判断1] && [判断2] 
格式2:命令1 && 命令2 
##表示需要命令1和命令2都为真,才为真,真的意思是$?为0
 
##执行逻辑:如果命令1为真,继续执行命令2,如果命令1为假,没必要执行命令2
 
 
或:|| (相当于电路并联)
格式1:[判断1] || [判断2] 
格式2:命令1 || 命令2 
##表示需要命令1和命令2其中一个为真,就为真,真的意思是$?为0
 
##执行逻辑:如果命令1为真,没必要执行命令2;如果命令1为假,执行命令2

[判断1] && [判断2]  || [判断3]的格式等于if,基本用if替代 

双中括号(支持正则表达式和通配符)

[[ expression ]] 用法
== 左侧字符串是否和右侧的PATTERN相同
 注意:此表达式用于[[ ]]中,PATTERN为通配符
 
=~ 左侧字符串是否能够被右侧的正则表达式的PATTERN所匹配
 注意: 此表达式用于[[  ]]中;扩展的正则表达式

小括号和花括号的区别

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

总结:
小括号类似于bash,在子bash中运行,不影响当前bash环境变量;
花括号类似于source,在当前的bash环境运行,会影响当前bash的环境变量的值;且需要以分号结尾

 

标签:语句,shell,##,是否,命令,判断,条件,字符串,bash
From: https://www.cnblogs.com/hxqwe/p/18191543

相关文章

  • psql 经常用语句
    webcss报错,没有登陆验证等问题deleteFROM"ir_attachment"wheremimetypelike'%/css%';deleteFROM"ir_attachment"wheremimetypelike'%/javascript%';Thereare4othersessionsusingthedatabase解决方式selectpg_terminate_......
  • shell运算符
    算术运算符点击查看详情运算符说明举例+加法expr$a+$b结果为30。-减法expr$a-$b结果为-10。*乘法expr$a\*$b结果为200。/除法expr$b/$a结果为2。%取余expr$b%$a结果为0。=赋值a=$b把变量b的值赋给a。==......
  • shell重定向与变量
    一、重定向与管道符重定向重定向:改变电脑的数据输出方向,默认是输出在屏幕上类型设备文件文件描述编号默认设备标准输入/dev/stdin0键盘标准输出/dev/stdout1显示器标准错误输出/dev/stderr2显示器交互式硬件设备标准输入:从该设备接收用户输入的数......
  • shell流程控制
    判断fi[root@VM-12-15-centoshome]#vitest.sh#编写如下a=100b=100iftest$[a]-eq$[b];thenecho"true";fi#执行[root@VM-12-15-centoshome]#shtest.shtrueifelse[root@VM-12-15-centoshome]#vitest.sh#编写如下a=100b=101iftest$[a]......
  • shell test命令
    数值案例1[root@VM-12-15-centoshome]#vitest.sh#编写如下num1=100num2=100iftest$[num1]-eq$[num2]thenecho'两个数相等!'elseecho'两个数不相等!'fi#执行[root@VM-12-15-centoshome]#shtest.sh两个数相等!案例2[root@VM-12-15-centos......
  • Vue模板语法、属性绑定、条件渲染的学习
    Vue模板语法:使用插值表达式的内容必须是有结果的内容才可以,就是需要return出来的才可以显示出来。插值表达式所表现的内容为纯文本模式如何避免即所有的逻辑操作都在js里面实现,不要再templete中实现可以完美的避免这个问题。Vue属性绑定1.使用v-bind进行属性绑定语法:v-b......
  • shell-cut,sed,awk
    一、cut:强大文本编辑处理工具,可以将文本按列进行划分的文本处理1、cut切割提取列cut文件或数据-d分隔符切割-f提取第x列2、cut切割提取字符cut文件或数据-c提取字符范围(n-,n-m,-n,n1,n2..)3、cut切割提取字节cut文件或数据-b提取字节范围......
  • shell echo命令
    打印字符串echo"Itisatest"打印特殊字符echo"\"Itisatest\""#输出结果"Itisatest"打印变量#read表示接收执行脚本的输入的第1行#编辑[root@VM-12-15-centoshome]#vitest.sh#编写如下#!/bin/shreadnameecho"$nameItisat......
  • Python执行PG数据库查询语句:以Markdown格式打印查询结果
    哈喽,大家好,我是木头左!1.准备工作在开始之前,需要确保已经安装了psycopg2和pandas这两个Python库。psycopg2是Python的一个PostgreSQL数据库适配器,用于连接和操作PostgreSQL数据库。而pandas则是一个强大的数据处理库,将用它来处理查询结果并以Markdown格式打印。pipinstallp......
  • shell传递参数
    执行脚本时传入参数[root@VM-12-15-centoshome]#vitest.sh#编写如下echo"Shell传递参数实例!";echo"执行的文件名:$0";echo"第一个参数为:$1";echo"第二个参数为:$2";echo"第三个参数为:$3";#设置权限[root@VM-12-15-centoshome]#chmod+xtest.sh......