shell脚本4
字符串变量
格式介绍:单引号 var='abc'
双引号 var="abc"
不使用引号 var=abc
区别:单引号,原样输出,不会解析里面的变量
双引号,会解析变量,并且可以使用子双引号,需要转义字符 \
不使用引号,会解析变量,但不能含有空格,空格后的字符串会作为命令去执行
获取字符串长度: ${#var_name}
拼接
无符号拼接 var3=${var1}${var2}
双引号拼接 var3="${var1} ${var2}"
混合拼接 var3=${var1}"&"${var2}
字符串截取
${变量名:start:length} | 从字符串的左边第 start 个字符开始, 向右截取 length 个字符。 从0开始数 |
${变量名:start} | 从字符串的左边第 start 个字符开始截取,直到最后。 |
${变量名:0-start:length} | 从字符串的右边第 start 个字符开始, 向右截取 length 个字符。 从1开始数 |
${变量名:0-start} | 从字符串的右边第 start 个字符开始截取,直到最后。 |
${变量名#*chars} | 从字符串第一次出现 *chars 的位置开始, 截取 *chars 右边的所有字符。 |
${变量名##*chars} | 从字符串最后一次出现 *chars 的位置开始, 截取 *chars 右边的所有字符。 |
${变量名%chars*} | 从字符串最后第一次出现 chars* 的位置开始, 截取 chars* 左边的所有字符。 |
${变量名%%chars*} | 从字符串第一次出现 chars* 的位置开始, 截取 chars* 左边的所有字符 |
数组
定义shell数组
array_name=( item1 item2 ...)
array_name=( [索引1]=item1 [索引2]=item2 ... )
获取shell数组数据
${ array_name[索引] } 获取某元素
${ array_name[*] } 获取数组全部元素
${ array_name[@] } 获取数组全部元素
数组拼接
array_name=( ${ array_name1[*] } ${ array_name2[*] } ... )
数组删除
unset array_name[索引] 删除数组某元素
unset array_name 删除数组
shell内置命令
shell内部提供的命令,可直接使用
内置命令 与 外部脚本文件 执行区别
内置文件:执行速度快,内置命令执行是当前shell环境的一部分,
在当前进程内执行,无需上下文切换
外部脚本文件:执行速度慢,需要磁盘IO操作,并且开启一个新的进程运行脚本文件,
导致进程之间上下文的切换
alias内置命令 设置别名 给命令设置别名
定义 alias 别名="命令"
删除指定别名 unalias 别名
删除当前shell环境中所有别名 unalias -a
以上两种都是临时删除,永久删除需要去配置文件手动删除
echo内置命令 在终端输出字符串,默认加上换行符
echo 字符串 默认输出换行
echo -n 字符串 -n输出不换行
echo -e "字符串中含有转义字符" -e解析转义字符
如 echo -e "hello \nworld" \n换行符
echo -e "hello world\c" \c清除echo结尾的换行
read内置命令 用于读取标准输入(终端控制台用户输入的数据)
#read 给多个变量赋值
#!/bin/bash
# 使用read命令读取数据 -p 提示信息 将数据赋值给多个变量
read -p "请输入姓名,年龄,爱好:" name age hobby
# 打印每一个变量的值
echo "姓名:${name}"
echo "年龄:${age}"
echo "爱好:${hobby}"#read 读取一个字符
#!/bin/bash
# 使用read命令读取数据 -p 提示信息 -n 1 设置读取一个字符
read -n 1 -p "您确定要删除吗(请输入y/n):" char
# 打印输出这个字符
printf "\n" # 输出换行 也可以使用echo代替
echo "您输入的字符:${char}"#read 限制时间输入
#!/bin/bash
# 使用read命令读取数据 提示信息-p 设置限制时间(20秒内)-t 20 静默状态看不见密码-sp
read -t 20 -sp "请输入密码(20秒内):" pwd1
# 输出一个换行
echo
# 使用read命令读取数据 提示信息-p 设置限制时间(20秒内)-t 20 静默状态看不见密码-sp
read -t 20 -sp "请再次输入密码(20秒内):" pwd2
# 输出一个换行
printf "\n"
# 校验两次密码是否一致
if [ $pwd1 == $pwd2 ]
then
echo "密码一致,通过"
else
echo "密码不一致,失败"
fi
exit内置命令 退出当前Shell进程结束运行,返回一个退出状态码;
使用$?可以接收这个状态码
1、结束当前shell进程
2、可以返回不同的状态码,用于处理不同的业务
declare内置命令
1、设置变量的属性
declare [+/-][aArxif][变量名称=设置值]
+/- "-"可用来指定变量的属性,"+"则是取消变量所设的属性。
a 设置为普通索引数组
A 设置为key-value关联数组
r 将变量设置为只读, 也可以使用readonly
x 设置变量成为环境变量,也可以使用export
i 设置为整型变量。
f 设置为一个函数变量
2、查看全部shell变量与函数
declare
declare -f 查询所有函数的定义
declare -F 查询所有函数的名称列表
3、实现关联数组变量
#!/bin/bash
#创建索引数组
echo "创建索引数组"
declare -a array1=( 100 abc "itheima" )
#获取索引数组数据
echo "获取array1数组第3个元素:${array1[2]}"
echo "打印array1数组所有元素:${array1[*]}"
echo
#创建关联数组
echo "创建关联数组"
declare -A array2=( ["one"]=100 ["two"]=abc ["itcast"]="itheima" )
#获取索引数组数据
echo "获取array2数组key=itcast元素:${array2["itcast"]}"
echo "打印array2数组所有元素:${array2[@]}"
相关文章:
shell脚本4
字符串变量 格式介绍:单引号 varabc 双引号 var"abc" 不使用引号 varabc 区别:单引号,原样输出,不会解析里面的变量 双引号,会解析变量,并且可以使用子双引号,需要转…...
递归思路讲解
最近刷到了树这一模块的算法题,树相关的算法题几乎都是用递归来实现的,但递归的思路却有点抽象,每次遇到递归,都是通过递归来深度或广度地遍历树,但对于递归遍历树的遍历路线,却有点抽象难懂,不…...
基于R语言APSIM模型高级应用及批量模拟
目录 专题一 APSIM模型应用与R语言数据清洗 专题二 APSIM气象文件准备与R语言融合应用 专题三 APSIM模型的物候发育和光合生产模块 专题四 APSIM物质分配与产量模拟 专题五 APSIM土壤水平衡模块 专题六 APSIM土壤碳、氮平衡模块 专题七 APSIM农田管理模块与情景模拟 专…...
Hyperf中的其它事项
Hyperf中的其它事项 关于 Hyperf 其它的内容我们就不多说了,毕竟框架这东西用得多了自然也就熟悉了。最重要的是——我的水平还不足以去深入地分析这个框架! 好吧,其它的功能大家可以去官方文档详细了解,毕竟国人自己做的框架&a…...
【技术选型】Elasticsearch 和Solr那个香?
我们为什么在这里?我存在的目的是什么?我应该运动还是休息并节省能量?早起上班或晚起并整夜工作?我应该将炸薯条和番茄酱或蛋黄酱一起吃吗? 这些都是古老的问题,可能有也可能没有答案。其中一些是非常困难或…...
4面美团测试工程师,因为这个小细节,直接让我前功尽弃.....
说一下我面试别人时候的思路 反过来理解,就是面试时候应该注意哪些东西;用加粗部分标注了 一般面试分为这么几个部分: 一、自我介绍 这部分一般人喜欢讲很多,其实没必要。大约5分钟内说清楚自己的职业经历,自己的核…...
数据恢复软件EasyRecovery16下载安装步骤教程
EasyRecovery16是一款专业好用的数据恢复软件,软件提供了向导式的操作向导,可以有效地恢复电脑或者移动存储设备中丢失的各种文件,包括删除的文件、格式化丢失的文件和清空回收站的数据!千呼万唤始出来,大家期盼许久的EasyRecover…...
Springboot 自定义缓存配置 CacheManager 及redis集成
目录 前言 集成 maven依赖 CacheManagerConfig配置 redis配置 使用 Springboot 集成使用缓存 Cacheable CacheEvict 前言 现有项目中经常遇到的缓存集成问题,Springboot提供了统一的接口抽象与缓存管理器,可集成多种缓存类型,如 Co…...
JS 中七个改变原数组的方法
目录 一、push 二、pop 三、unshift 四、shift 五、splice 六、sort 七、reverse 一、push 在数组的尾部添加元素,并返回新的长度。 let arr [1] arr.push(2) console.log(arr) // [1, 2] 二、pop 删除数组最后面一个元素、并返回删除的元素。 let arr [1, …...
【笔试强训选择题】Day7.习题(错题)解析
作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:笔试强训选择题 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!! 文章目录…...
Vue电商项目--axios二次封装
postman测试接口 刚刚经过postman工具测试,发现接口果然发生了改变。 新的接口为http://gmall-h5-api.atguigu.cn 如果服务器返回的数据code字段200,代表服务器返回数据成功 整个项目,接口前缀都有/api字样 axios二次封装 XmlHttpRequ…...
人生四维度
人生四维度 不是有钱了就成功,你知道;人生的成功不止一种,你也知道。但成功还有哪种?你知道吗? 如果把人生的体验展开,我们可以得到四个维度,高度、深度、宽度和温度。 财富、权力、影响力 构…...
Python 调用 MessageBeep 播放系统音效
Python 调用 MessageBeep 播放 Windows 系统提示声音 Windows API 函数 "MessageBeep" 介绍 "Windows API MessageBeep"是一个用于发出系统提示音效的函数。它可以向用户发出一种预定义的声音,以指示事件的发生或某个条件的满足。例如…...
废物,我TMD一个985却斗不过专科生(大厂自动化测试2年被裁)
前言 看到标题,可能很多读者朋友恐怕又要骂我了,985这个特殊的字眼也确实异常晃眼,实际上现在985,211也越来越多,它能代表你能够进入到更高的平台,拿到“高级工厂”的入场券,但并不意味着你会成…...
p70 内网安全-域横向内网漫游 Socks 代理隧道技术(NPS、FRP、CFS 三层内网漫游)
数据来源 本文仅用于信息安全学习,请遵守相关法律法规,严禁用于非法途径。若观众因此作出任何危害网络安全的行为,后果自负,与本人无关。 必要基础知识点: 内外网简单知识内网 1 和内网 2 通信问题正向反向协议通…...
第三十二章 Unity Mecanim动画系统(上)
在上一章节中,我们介绍了Unity的旧版动画系统,本章节来介绍新版的Mecanim动画系统。新版的Mecanim动画系统实际是对旧版动画系统的升级。新版的Mecanim动画系统仍然是建立在动画片段的基础上的,只不过它给我们提供了一个可视化的窗口来编辑动…...
第二章 集合
系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目…...
这一篇Databinding应该可以帮助迅速上手吧
Databinding使用篇(迅速上手) 使用前需要在模块级别的build.gradle里面的android闭包里添加: dataBinding{enabled true}接着在layout文件中按下Alt 回车, 将布局转换成data binding layout即可,此时编译就会生成对…...
【PHP在线定制商城网站源码V3.0】开源的DIY在线定制商城系统+在线礼品定制
源码下载:https://download.csdn.net/download/m0_66047725/87637177 PHP在线定制商城网站源码,免费开源、免费下载。本商城基于mycncart开发。安装成功后即可浏览,你可以在后台->安装扩展功能上传安装插件,在代码调整中点击刷…...
cout源码浅析
目录 cout源码浅析 那么对于没有定义在这之中的要怎么办呢? 实际使用 结语 首先来看我从cplusplus中截取的这张图: 注意最下面这一行字。cout其实是ostream的一个标准对象object。而上面则演示了一些继承关系。 好的,理解了之后…...
探索Tabler Icons 3.40.0:新增6000+高质量SVG图标的终极指南
探索Tabler Icons 3.40.0:新增6000高质量SVG图标的终极指南 【免费下载链接】tabler-icons A set of over 4800 free MIT-licensed high-quality SVG icons for you to use in your web projects. 项目地址: https://gitcode.com/GitHub_Trending/ta/tabler-icons…...
Phi-4-Reasoning-Vision智能助手:医疗影像图文问答系统构建实践
Phi-4-Reasoning-Vision智能助手:医疗影像图文问答系统构建实践 1. 项目概述 Phi-4-Reasoning-Vision是一款基于微软Phi-4-reasoning-vision-15B多模态大模型开发的高性能推理工具,专为医疗影像分析场景优化。该系统能够理解医学影像内容并回答专业问题…...
终极PrimeVue Toast组件交互事件回调指南:从基础到高级应用
终极PrimeVue Toast组件交互事件回调指南:从基础到高级应用 【免费下载链接】primevue Next Generation Vue UI Component Library 项目地址: https://gitcode.com/GitHub_Trending/pr/primevue PrimeVue是一款功能强大的Vue UI组件库,其中Toast组…...
为什么你的Ping总是丢包?这7个隐藏原因90%的人都忽略了(含Wireshark分析技巧)
为什么你的Ping总是丢包?这7个隐藏原因90%的人都忽略了(含Wireshark分析技巧) 在网络运维的日常工作中,Ping命令就像网络工程师的听诊器,简单却至关重要。但当你发现Ping测试频繁丢包时,问题往往不像表面看…...
ReACT深度解析四:从数字员工到数字文明——智能体的终极演进与文明级想象
内容定位: 未来畅想文章日期: 2026-03-26【场景引入】凌晨两点,南京的OpenClaw训练营早已散场,但服务器日志仍在跳动。一个刚被赋予“学习进化”权限的电商客服智能体,在完成今日第317个订单查询后,没有…...
2026年专业金属链板输送带服务哪家强?TOP排名为你揭晓!
家人们,在工业生产领域,金属链板输送带那可是相当重要的设备,它的质量和服务直接影响着生产效率。今天咱就来聊聊 2026 年专业金属链板输送带服务的那些事儿,给大家揭晓一下排名情况,顺便看看哪家更值得咱们选择。冲突…...
iPhone 抓包失败 4 种具体情况逐个解决方法
抓不到包这个描述太模糊了,在实际调试中,这句话至少对应四种完全不同的情况: 完全没有请求只有浏览器能抓到能抓到但 HTTPS 解不开能抓到但数据不完整 如果不先分清楚是哪一种,就会一直重复安装证书或改代理配置。一、先做一个验证…...
别再手动写RTL了!用Vivado FIR Compiler IP核5分钟搞定一个低通滤波器
5分钟极速部署:用Vivado FIR Compiler IP核实现专业级低通滤波器 在FPGA信号处理领域,滤波器设计往往需要耗费工程师大量时间在RTL编码和验证上。但今天,我们将颠覆这一传统工作流程——通过Vivado的FIR Compiler IP核,即使没有深…...
网页实现文字转语音朗读功能
SpeechSynthesisUtterance是HTML5中新增的API,用于将指定文字合成为对应的语音。 <button onclick"play()">朗读</button> <script>var utterThis new SpeechSynthesisUtterance();utterThis.text "hello word";utterThis…...
Venera:5大革新功能打造无缝全平台漫画阅读体验
Venera:5大革新功能打造无缝全平台漫画阅读体验 【免费下载链接】venera A comic app 项目地址: https://gitcode.com/gh_mirrors/ve/venera Venera 是一款开源跨平台漫画应用,专为漫画爱好者打造全设备同步的阅读解决方案。无论你使用 Windows、…...
