bash的特有扩展属性

1.[[ ]] 符合匹配

#!/bin/bash
name=$1
if [[ "${name}" =~ ^li* ]]; thenecho "以li开头"
elseecho "不以li开头"
fi
#
if [[ "${name}"  == "liwl" ]] || [[ "${name}" == "liwanliang" ]]; thenecho ""
fi

2. $(( )) 数学计算

#!/bin/bash
a=$1
b=$2
echo $(( ${a} + ${b} ))

3. $( )执行命令或者函数

当需要把命令或者函数执行结果赋值给变量时,使用$()进行操作

#!/bin/bash
function print_name(){echo "liwl"
}
name=$(print_name)
echo "${name}"
#
myhostname=$(hostname)
echo "${myhostname}"

4. 字符串剪裁

匹配的字符串被剪裁,生成新的字符串。记忆方法:键盘上#符号在左,%符号在右。一个符号不贪婪,两个符号巨贪婪

注意:未改变旧字符串变量,需要用新的变量来存储结果

#!/bin/bash
domain="www.liwl.cn"
echo "字符串:${#domain}"
#
echo "从左往右非贪婪模式匹配: ${domain#*.}" #结果:liwl.cn
echo "从左往右贪婪模式匹配: ${domain##*.}" #结果:cn
#
echo "从右往左非贪婪模式匹配: ${domain%.*}" #结果:www.liwl
echo "从右往左贪婪模式匹配: ${domain%%.*}" #结果:www

剪裁常用于:IP地址,域名,文件路径等规律性字符串

另外一种剪裁是按照顺序:

#!/bin/bash
name="liwanliang"
echo "从左数的第4个字符串开始剪裁,${name:4}"
echo "从右数第4个字符串开始剪裁:${name: -4}" #:和-直接,有空格。无空格表示如果变量值没有值时,提供默认值
#!/bin/bash
name="liwanliang"
echo "${name:-4}" #输出liwanliang
echo "${name: -4}" #输出iang
name=""
echo "${name:-4}" #输出4
echo "${name: -4}" #输出空

5. 字符串替换

#!/bin/bash
LDAP=$(egrep -w ldap /etc/passwd)
echo "原字符串:${LDAP}"
#
echo "匹配"
echo "单个匹配:${LDAP/ldap/liwl}"
echo "全部匹配:${LDAP//ldap/liwl}"
#
echo -e "会把l到p之前的字符替换:\n替换前${LDAP}\n替换后${LDAP/l*p/liwl}"
#
echo "替换"
echo -e "单个替换:\n替换前${LDAP}\n替换后${LDAP/l??p/liwl}"
echo -e "全部替换:\n替换前${LDAP}\n替换后${LDAP//l??p/liwl}"
echo "删除"
echo -e "删除前${LDAP}\n删除后${LDAP/l*p/}"
echo -e "删除前${LDAP}\n删除后${LDAP/l??p/}"
echo -e "删除前${LDAP}\n删除后${LDAP//l??p/}"

注意:

  • /#表示只在一行的开头进行匹配
  • /%表示只在一行的末尾开始匹配
  • //匹配所有实例
  • ^^表示转换为大写
  • ,,表示转换为小写
  • *表示零或者多个
  • ?表示一个字符

6. 大小写转换

7. source加载变量

8. 函数定义

sh的规范:函数名(){...}

bash和ksh可接受规范:function 函数名{...}

仅bash接受规范:function 函数名(){...}

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

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

相关文章

【Shiro】4.Springboot集成Shiro

https://blog.csdn.net/sco5282/article/details/134016549 前面已经学习了Shiro快速入门和缓存 。现在假定实际业务中需要完成以下功能: 1. 包含页面登录和首页。 2. 登录时需要连接数据库,完成登录认证和授权。 3. 登录时,密码需要加密。 4. 登录和授权信息能够缓存。 5. …

基于3peak 17串AFE芯片TPB76016-QP3R的电池BMS控制板方案

随着电动汽车、可再生能源存储设备以及便携式电子产品的普及,对高效、安全的电池管理系统(BMS)需求日益增加。17通道高精度电池管理产品—TPB76016,内置高精度基准,工作温度支持-40C to +125C,可广泛应用于动力电池、储能电池、以及其他消费类电池的BMS控制板。TPB76016-…

mysql登录遇到ERROR 1045问题解决方法

遇到 MySQL 登录时出现 ERROR 1045(访问被拒绝,用户名或密码错误),可以通过以下步骤来解决: 1. 确认用户名和密码检查用户名和密码:确认在连接数据库时输入的用户名和密码是否正确。 尝试在命令行中连接数据库,确认是否能成功登录:bashmysql -u your_username -p2. 重置…

网站提示连接数据库错误怎么解决

解决网站连接数据库错误通常需要检查以下几个方面:检查数据库连接参数确认数据库地址(hostname)、端口号、用户名和密码是否正确。 检查数据库名称是否正确。检查网络连接确保服务器与数据库之间的网络连通性正常。 如果是在云环境中,检查安全组设置或防火墙规则是否允许从…

验证码绕过爆破

验证码绕过爆破 图片验证码绕过 方法一、插件 xiapao 下载地址:https://github.com/smxiazi/NEW_xp_CAPTCHA/releases/tag/4.2 需要 python3.6 的环境来启动 sercer.py 服务,下载 python3.6 安装包,选择路径进行安装(不需要配置环境变量),然后再 pycharm 中打开文件,配置…

react 知识点汇总(非常全面)

React 是一个用于构建用户界面的 JavaScript 库,由 Facebook 开发并维护。它的核心理念是“组件化”,即将用户界面拆分为可重用的组件。 React 的组件通常使用 JSX(JavaScript XML)。JSX 是一种 JavaScript 语法扩展,允许开发者在 JavaScript 代码中编写类似 HTML 的结构。…

大核注意力机制

一、本文介绍 在这篇文章中,我们将讲解如何将LSKAttention大核注意力机制应用于YOLOv8,以实现显著的性能提升。首先,我们介绍LSKAttention机制的基本原理,它主要通过将深度卷积层的2D卷积核分解为水平和垂直1D卷积核,减少了计算复杂性和内存占用。接着,我们介绍将这一机制…

2024熵密杯wp

第一部分:初始谜题这一部分算是开胃菜,形式也更像平时见到的CTF题目,三个题目都是python加密的,做出其中任意一个就可以进入第二部分,也就是一个更类似真实情境的大型密码渗透系统。但每个初始谜题都是有分数的,所以就算开了第二部分也当然要接着做。每个题目也都有前三血…

2024高校网络安全管理运维赛 wp

0x00 前言本文是关于“2024高校网络安全管理运维赛”的详细题解,主要针对Web、Pwn、Re、Misc以及Algorithm等多方向题目的解题过程,包含但不限于钓鱼邮件识别、流量分析、SQLite文件解析、ssrf、xxe等等。如有错误,欢迎指正。0x01 Misc签到给了一个gif,直接在线分帧得到syn…

张量矩阵乘法分块乘法概述

张量矩阵乘法分块乘法概述 介绍一下矩阵计算相关的内容, 从最基本的算法,到Cutlass这些线性代数模版库, 特别是Layout代数相关的内容,再逐渐细化到一些硬件实现访存优化和一些算子融合。 6.3.1 GEMM概述 1. GEMM定义 对于一个矩阵乘法, 定义如下: (6-1)一个矩阵乘法定义,如…