首页 > 系统相关 >Shell编程之条件语句

Shell编程之条件语句

时间:2024-05-08 23:26:06浏览次数:20  
标签:语句 Shell ## 编程 test 测试 字符串 表达式

目录

1.条件测试

Shell环境根据命令执行后的返回状态值($?)来判断是否执行成功,当返回值为0(真true)时表示成功,返回值为非0值(假false)时表示失败或异常。
test命令
测试表达式是否成立,若成立返回0,否则返回其他数值
test 条件表达式
[ 条件表达式 ]

2.文件测试与整数测试

(1)文件测试

test 选项 文件/目录路径
test 选项 $变量
[ 选项 文件或目录 ]
[ 选项 $变量]

常用选项
-e 目录或文件是否存在(Exist)
-d 目录是否存在(Directory)
-f 文件是否存在(File)
-r 当前用户是否有读权限(Read)
-w 当前用户是否有写权限(Write)
-x 当前用户是否有执行权限(Excute)
-L 软连接数否存在


(2)整数测试

test 整数1 选项 整数2
[ 整数1 选项 整数2 ]
[[ 运算表达式 选项 整数 ]]

常用选项
-eq 等于 ==
-ne 不等于 !=
-gt 大于 >
-lt 小于 <
-le 小于等于
-ge 大于等于


3.字符串测试与逻辑测试

(1)字符串测试

test "字符串1" == "字符串2"     [ "字符串1" == "字符串2" ]      [[ "字符串1" == "字符串2" ]]    ##判断字符串是否相同
test "字符串1" != "字符串2"     [ "字符串1" != "字符串2" ]      [[ "字符串1" != "字符串2" ]]     ##判断字符串或变量是否不同
 [[ "字符串1" =~ "字符串2" ]]    ##判断字符串是否包含字符串2
test -z "字符串"      test -z "$变量"  [ -z "$变量" ]   ##判断字符串或变量是否为空
test -n "字符串"      test -n "$变量"  [ -n "$变量" ]   ##判断字符串或变量是否有字符串




(2)逻辑测试

[ 表达式1 ] 操作符 [ 表达式2 ]
命令1 操作符 命令2

[ 表达式1 ] && [ 表达式2 ]   [ 表达式1 -a 表达式2 ]    [[ 表达式1 && 表达式2 ]]       ##且,要求前后表达式条件都成立
[ 表达式1 ] || [ 表达式2 ]   [ 表达式1 -o 表达式2 ]    [[ 表达式1 || 表达式2 ]]       ##或,只需前后表达式条件成立一个即可

[ 表达式1 ] || 命令1             ##如果表达式1条件成立不会执行或运算符后面的命令1,如果表达式1条件不成立则会执行或运算符后面的命令1
[ 表达式1 ] && 命令1 || 命令2    ##如果表达式1条件成立则执行命令1,如果表达式1条件不成立则命令2

[ ! 表达式1 ]                   ##取反,如果表达式1条件成立则最终结果为条件不成立




-c:发送包的个数
-i:发送包的间隔时间
-W:超时时间
-w:多少秒后停止 ping 命令操作




4.if语句

(1)if单分支语句

(2)if双分支语句

(3)if多分支语句


5.case分支语句


*注:判断进程是否正在运行的方法

systemctl status 进程服务
netstat -lntup | grep :端口进程名
netstat -lntup | grep 进程名
ss -lntup | grep :端口/进程名
lsof -i :端口
ps -elf | grep 进程名 | grep -v "grep" | grep -v "$$" | wc -l
pidof 进程名 | wc -w    #统计进程号大于0开启,0关闭
killall -0 进程名   #进程存在0

标签:语句,Shell,##,编程,test,测试,字符串,表达式
From: https://www.cnblogs.com/zsy828/p/18179104

相关文章

  • 编程:java 发送email程序:通用版本:借鉴“蚂蚁小哥 <[email protected]>”的文章
     1packagecom.alibaba.otter.canal.adapter.launcher.loader;23importjava.text.SimpleDateFormat;4importjava.util.*;5importjavax.mail.*;6importjavax.mail.internet.*;78publicclassJavaxJavaMailClient{910private......
  • 高效C#编程:通过智能线程池管理提升性能
    前言C#编程中,线程池(ThreadPool)是一个重要的概念,它允许开发者更有效地管理和利用系统资源。通过线程池,我们可以避免频繁地创建和销毁线程,从而减少系统开销并提高程序的响应速度和吞吐量。在软件开发中,效率是关键,无论你是在开发一个简单的应用程序还是一个复杂的系统。为了创建一......
  • 【译】下一个大型编程语言是英语(自然语言)
    来源:every.to/chain-of-thought/i-spent-24-hours-with-github-copilot-workspacesGitHubCopilot就像程序员的自动完成功能。当你输入时,它猜测你想要完成什么,并建议它认为你将要编写的代码块。如果它猜对了——而它经常猜对——你只需按下Tab键,它会为你填写剩下的部分。......
  • 一条SQL查询语句是如何执行的
    比如,你有个最简单的表,表里只有一个ID字段,在执行下面这个查询语句时:mysql>select*fromTwhereID=10;我们看到的只是输入一条语句,返回一个结果,却不知道这条语句在MySQL内部的执行过程。下面会把MySQL拆解一下,看看里面都有哪些“零件”,借由这个拆解过程,对MySQL有更深......
  • shell 获取文本特定行数据
    在Shell脚本中获取文件的特定行数据,尤其是获取第N行数据,有多种方法。以下是几种常见且简便的方法:使用sed命令:如果你想获取文件的第N行,可以使用sed命令,其中N是你想获取的行号。sed-n'Np'filename例如,获取第5行:sed-n'5p'filename结合使用head和tail命令:这是一种......
  • Python基础之流程控制语句
    【一】流程控制语句介绍程序是由语句构成,而流程控制语句是用来控制程序中每条语句执行顺序的语句流程控制方式有顺序结构分支结构循环结构最简单最常用的就是顺序结构,执行方式是从上至下一句一句来【二】顺序结构【1】什么是顺序结构顺序结构是指按照代码书写的顺......
  • 编程语言和Python语言介绍
    编程语言和Python语言介绍一、【编程语言介绍】【1】机器语言(1)机器语言是什么机器语言就是计算机可以理解的语言,可以直接通过机器语言操作我们的硬件计算机是基于电工作的,高频是0,低频是1计算机通过控制高低频变化来工作(2)机器指令通过制高低电频的变化组成一系列的指令......
  • 常用Linux开发工具(finalshell,)
    稳定,免费,国产,跨平台官网,http://www.hostbuf.com/,总结使用体验,简约不简单 下载……安装……华北直连本地测试服务器确保ssh_key,由运维同学帮忙配置好。配置finalshell,1,2,3,…… 点击配置记录,或者历史记录,开始coding  华北跳板机远程155确保本机的ssh_key,已经由......
  • 一行SQL语句实现统计未来7天、按月统计数据,无数据填充0
    1背景由于业务需求,在项目的报表中心中需要未来7天、按月统计数据,且要求按天补全数据,补数据填为0。附实测SQL语句,请大家指正。2举例2.1未来7天,按天补全数据,无数据填充0sql语句:selectt1.lastDaysasx,IFNULL(t2.count,0)asvalfrom(SELECTdate_format(@last......
  • 如何分析慢SQL语句
    如果一条sql执行很慢的话,通常会使用MySQL自动的执行计划explain来去查看这条sql的执行情况,比如在这里面可以通过key和key_len检查是否命中了索引,如果本身已经添加了索引,也可以判断索引是否有失效的情况,第二个,可以通过type字段查看sql是否有进一步的优化空间,是否存在全索引扫描或全......