SHELL(03)

SHELL(02)

中断控制

[ break ] 中断
  • 跳出当前所在的循环体 , 执行循环体后的语句块
  • 可以结束整个循环
[ continue ] 继续
  • 跳过循环体内余下的语句 , 重新判断条件以决定是否需要执行下一次循环
  • 结束当前循环 , 进入下次循环
[ exit ] 退出
  • 退出脚本
  • 结束循环以及整个脚本

[ case ]语句

  • case分支属于匹配执行的方式,它针对指定的变量预先设置一个可能的取值,判断该变量的实际取值是否与预设的某一个值相匹配,如果匹配上了,就执行相应的一组操作,如果没有任何值能够匹配,就执行预先设置的默认操作。
    #!/bin/bashcase $1 int)      #如果$1是t就执行touch任务touch   $2;;m)    #如果$1是m就执行mkdir任务mkdir   $2;;r)     #如果$1是r就执行rm任务rm -rf   $2;;*)	   #表其他任意情况echo "请输入t或者m或者r"esac

[ ss ] 检测联网的服务

可以查看系统中启动的端口信息

  • 常用选项

    [ -n ] ----- 以数字格式显示端口号

    [ -t ] ----- 显示TCP连接端口

    [ -u ] ----- 显示UDP连接端口

    [ -l ] ----- 显示服务器正在监听的端口

    [ -p ] ----- 显示监听端口的服务名称是什么

    常用 [ -ntulp ]

    例子: [ ss -ntulp |grep nginx ] #显示所有的端口 , grep 选出nginx 相关

    #[ grep -q nginx ] == [ grep nginx &> /dev/null ]

函数

  • 变量中存储的大部分是字符串 , 函数中存储的是命令.

  • 在Shell环境中 , 将一些需要重复使用的操作 , 定义为公共语句块 , 称为函数

  • 使用函数的好处

    • 使脚本代码更简洁 , 增强易读性
    • 提高Shell脚本的执行效率
  • 服务脚本中的函数应用

    • 使用与比较复杂的启动 / 终止控制操作
    • 方便在需要时多次调用
函数的定义
    function  函数名 {命令序列.. ..}
    函数名() {命令序列.. ..}

字符串处理

字符串的截取
  • 使用 ${} 表达式

  • ${ var : 起始位置 : 长度 }

    • 起始位置从 0 开始计数
  • [ a=abcd ]
    [ echo ${a:1:2} ] ====> [ bc ]
    [ echo ${a:0:2} ] ====> [ ab ]

  • [ echo $RANDOM ] 表随机数字

字符串的替换
  • 替换为空就是删除
  • 只替换第一个匹配结果用 [ ${ 变量名 / old / new } ]
  • 替换所有匹配结果用 [ ${ 变量名 // old / new } ]
  • [ a=aaaa ]
  • [ echo ${a/a/b} ] ====> [ baaa ]
  • [ echo ${a//a/b} ] ====> [ bbbb ]
字符串删除
  • 只能从两头删 , 掐头去尾

  • 从左到右最短匹配删除 [ ${变量名 #* 关键词} ]

  [ echo $a ]1 : 2 : 3 : 4 : 5 : 6 : 7备用值[ echo ${ a #* : } ]备用值2 : 3 : 4 : 5 : 6 : 7[ echo ${ a #* 3 } ]: 4 : 5 : 6 : 7
  • 从左到右最长匹配删除 [ ${变量名 ##* 关键词} ]
  [ echo $a ]1 : 2 : 3 : 4 : 5 : 6 : 7[ echo ${ a ##* : } ]7[ echo ${ a #* 3 } ]: 4 : 5 : 6 : 7
  • 从右到左最短匹配删除 [ ${ 变量名 % 关键词 * } ]
  [ echo $a ]1 : 2 : 3 : 4 : 5 : 6 : 7[ echo ${ a % :* } ]1 : 2 : 3 : 4 : 5 : 6[ echo ${ a % 3* } ]1 : 2 :
  • 从右到左最长匹配删除 [ ${ 变量名 %% 关键词 * } ]
  [ echo $a ]1 : 2 : 3 : 4 : 5 : 6 : 7[ echo ${ a %% :* } ]1 [ echo ${ a %% 3* } ]1 : 2 :
定义初值
  • [ ${ 变量名 : -xxx } ] 这里的初值为备用值
  • 备用值 : 使变量的内容不为空 , 当NULL时引用备用值
  [ echo $a ]1 : 2 : 3 : 4 : 5 : 6 : 7[ echo ${ a #* 7 } ]"NULL"[echo ${ a : -1234567 }]1234567

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/782027.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Springboot的学生选课系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的学生选课系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构&…

线程池详解、核心参数、拒绝策略

什么是线程池 线程池是一种池化技术,它预先创建一组线程,用于执行异步任务。当有新任务到来时,线程池可以立即分配一个线程来处理,而不需要临时创建。这样可以减少因为频繁创建和销毁线程而导致的开销。 线程池的应用场景 高并…

2024年腾讯云4核8G12M轻量应用服务器测评_CPU内存带宽系统盘

腾讯云4核8G服务器价格:轻量4核8G12M优惠价格646元15个月、CVM S5服务器4核8G配置1437元买1年送3个月。腾讯云4核8G服务器支持多少人同时在线?支持30个并发数,可容纳日均1万IP人数访问。腾讯云百科txybk.com整理4核8G服务器支持多少人同时在线…

laravel(源码笔记) request-response 执行过程

request capture SymfonyRequest::createFromGlobals() createRequestFromFactory如果是form提交的方式,则创建Symfony Package里提供的 ParameterBag对象包,处理请求。 createFromBase duplicate 克隆请求,并重设一些属性 response run…

什么是技术分析和EA技术?澳福一个提醒丰厚收益

技术分析是指根据炒外汇市场汇率走势的过去表现,借助技术分析工具预测汇率的未来趋势并确定入市、出市策略的预测分析方法。 它是以预测市场价格变化的未来趋势为目的,以市场行为(外汇市场的价格和交易量)的图形、图表、形态、指标为手段,使用…

docker通过已有镜像打包执行

1、查看已有镜像 docker images 2、制作dockerfile FROM python LABEL maintainer"JETZ" add . / WORKDIR /3、新建镜像 docker build -t python3.7.13 .4、打包导出镜像 docker save python3.7.13 -o /opt/python3.7.13.tar5、重新加载镜像 cd /opt docker l…

花钱的艺术:消费和投资如何分配

消费是钱花出去就回不来了。 消费分为可选消费和必需消费。 必需消费是必须花的钱,用一句老话,财米油盐酱醋茶,维持生活必需的支出。 可选消费,用来提升生活水平的支出,可花可不花,比如苹果手机&#xf…

电商系列之取消订单

> 插:AI时代,程序员或多或少要了解些人工智能,前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 坚持不懈,越努力越幸运,大家…

SOA-面向服务架构

SOA-面向服务架构 1.概述2.SOA的设计原则包括:3. SOA实现方法1.Web Service2. 服务注册表3. 企业服务总线 细讲 超赞笔记 1.概述 SOA (Service-Oriented Architecture,SOA),从应用和原理的角度,目前有2种…

GET 与 POST(计算机网络)

GET :从服务器获取指定的资源。 POST :根据请求负荷(报文body)对指定的资源做出处理。 GET 和 POST 方法都是安全和幂等的吗? 在 HTTP 协议里安全和幂等的概念: 「安全」:请求方法不会「破坏」…

Matlab之提高交叉定位点的定位精度

通过测向交叉定位的方法,按理只需2根测向线即可得出定位点的位置。但由于误差的存在,求出的定位点位置存在一定的偏差。为了得到更加精确的定位点位置,需要对定位点进行冗余测量,从而得到多个定位点,然后通过定位点估计…

redis分布式锁-----基于Redis的SETNX命令的简单分布式锁实现

Redis的SETNX命令的简单分布式锁实现的Java示例 首先&#xff0c;确保你已经引入了Jedis这个Java Redis客户端库。你可以通过Maven或Gradle来添加依赖。 1、Maven依赖 <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifact…

Docker一键部署MySQL 8

Docker一键部署MySQL 8 脚本下载 下载路径&#xff1a;mysql8.0.20.sh 使用FTP 工具或rz 命令将脚本上传到服务器 授权 [rootxxx~]# chmod x mysql8.0.20.sh执行脚本 [rootiZm5e4qautzfi19sq8s7aeZ ~]# ./mysql8.0.20.sh 初始化MySQL部署... 拉取MySQL 8.0.20 镜像... 8.…

(一)认识微服务

1. 什么是微服务 微服务是分布式架构的一种。 1.1 微服务技术 &#xff01; Spring Cloud 分布式架构就是要把服务进行拆分&#xff0c;拆分的过程会产生一系列问题需要解决&#xff0c;而Spirng Cloud 只是解决了服务拆分的过程中的服务治理问题&#xff0c;所以一个完整的…

GRE和MGRE综合实验

实验拓扑图 实验思路 根据图中所属网段&#xff0c;配置ip地址和网关R1,R2,R3,R4配置缺省路由&#xff0c;可以是公网互通使用ppp验证&#xff0c;R1与R5为PAP验证&#xff0c;R5:aaa地址池&#xff0c;创建用户名以及密码&#xff0c;同时进行pap服务认证&#xff0c;同时在…

playwright 对象是 Playwright 框架中的核心对象

Playwright对象是Playwright框架中的一个重要对象&#xff0c;它充当了管理和控制浏览器实例的中介&#xff0c;并提供了访问不同浏览器引擎功能的接口。Playwright库为Web浏览器自动化提供了一组强大的API&#xff0c;可以轻松地操作和控制Chromium、Firefox和WebKit浏览器。p…

(root用户与非root用户)linux下安装最新版tmux

下载依赖包 tmux需要两个依赖包&#xff0c;libevent和ncurses&#xff0c;在tmux的github wiki官网可以找到对应的源码下载地址: libeventncursestmux 下载三个包的tar.gz文件 root用户与非root用户 下列安装指令中&#xff0c;如果是root用户想安装到系统级目录下&#x…

使用nvm管理nodejs版本

文章目录 1、下载NVM2、选择NVM安装3 、查询版本号&常用命令4、nvm命令安装指定版本node4.1 安装指定node4.2 查看是否安装成功4.3 切换node版本到你想要的版本4.4 再次查看nvm版本列表4.5 nvm其他常用命令 这个是每个全能前端经常会用到的&#xff0c;之前用过现在重装了&…

如何Hook [NSString stringWithFormat] 代码hook stringWithFormat中替换NSString字符串

怎么hook stringWithFormat方法 id stringWithFormat(id self, SEL op,id obj1, ...); id stringWithFormat(id self, SEL op,id obj1, ...){va_list args;va_start(args, obj1);//等价实现方法NSString *result [[NSMutableString alloc] initWithFormat:obj1 arguments:arg…

BitVM2:比特币上的无需许可验证

1. 引言 前序博客有&#xff1a; 基于BitVM的乐观 BTC bridgeBitVM&#xff1a;Bitcoin的链下合约Bitcoin Bridge&#xff1a;治愈还是诅咒&#xff1f; 最初的 BitVM 设计仅限于两方设置。BitVM2结合了并行和冗余实例&#xff0c;以引入基于 1-of-n 诚实假设的多方配置。这…