首页 > 系统相关 >第十二天:SHELL编程之常见工具、数组及字符串切片

第十二天:SHELL编程之常见工具、数组及字符串切片

时间:2024-01-24 22:13:15浏览次数:38  
标签:SHELL 第十二天 变量 pattern 编程 字符串 数组 var word

一、信号捕捉 trap

  trap 命令可以捕捉信号,修改信号原来的功能,实现自定义功能

#列出所有信号   trap -l #进程收到系统发出的指定信号后,将执行自定义指令,而不会执行原操作   trap '触发指令' 信号 #忽略信号的操作   trap '' 信号 #恢复原信号的操作   trap '-' 信号 #列出自定义信号操作   trap -p #当脚本退出时,执行finish函数   trap finish EXIT 二、创建临时文件 mktemp

 

三、安装复制文件 install

 install 功能相当于cp,chmod,chown,chgrp ,mkdir 等相关工具的集合

install命令格式: 

 

四、交互式转化批处理工具 expect 

expect 是由Don Libes基于 Tcl( Tool Command Language )语言开发的,主要应用于自动化交互式 操作的场景,借助 expect 处理交互的命令,可以将交互过程如:ssh登录,ftp登录等写在一个脚本上, 使之自动化完成。尤其适用于需要对多台服务器执行相同操作的环境中,可以大大提高系统管理人员的 工作效率 

 

五、数组

1、数组介绍

  变量:存储单个元素的内存空间   数组:存储多个元素的连续的内存空间,相当于多个变量的集合   数组名和索引   索引的编号从0开始,属于数值索引   索引可支持使用自定义的格式,而不仅是数值格式,即为关联索引,bash 4.0版本之后开始支持   bash的数组支持稀疏格式(索引不连续) 

 2、声明数组

  #普通数组可以不事先声明,直接使用   declare -a ARRAY_NAME   #关联数组必须先声明,再使用   declare -A ARRAY_NAME

3、数组赋值

 4、显示所有数组

 显示所有数组: declare -a  

5、引用数组

 

  6、删除数组

 

7、数组数据处理

 数组切片:

8、关联数组

declare -A ARRAY_NAME ARRAY_NAME=([idx_name1]='val1' [idx_name2]='val2‘...)    六、字符串切片 1、基于偏移量取字符串

       

 2、基于模式取子串

  

  #其中word可以是指定的任意字符,功能:自右而左,查找var变量所存储的字符串中,第一次出现的word,

  删除字符串最后一个字符向左至第一次出现word字符串(含)之间的所有字符,即懒惰模式,以从右向左的第一   个word为界删右留左   ${var%word*}   ${var%word}   #同上,只不过删除字符串最右侧的字符向左至最后一次出现word字符之间的所有字符,即贪婪模式,以从右向   左的最后一个word为界删右留左   ${var%%word*}   ${var%%word}

 六、查找替换

#查找var所表示的字符串中,第一次被pattern所匹配到的字符串,以substr替换之,懒惰模式   ${var/pattern/substr} #查找var所表示的字符串中,所有能被pattern所匹配到的字符串,以substr替换之,贪婪模式   ${var//pattern/substr} #查找var所表示的字符串中,行首被pattern所匹配到的字符串,以substr替换之   ${var/#pattern/substr} #查找var所表示的字符串中,行尾被pattern所匹配到的字符串,以substr替换之   ${var/%pattern/substr}

七、查找并删除

#删除var表示的字符串中第一次被pattern匹配到的字符串,懒惰模式   ${var/pattern} #删除var表示的字符串中所有被pattern匹配到的字符串,贪婪模式   ${var//pattern} #删除var表示的字符串中所有以pattern为行首匹配到的字符串   ${var/#pattern} #删除var所表示的字符串中所有以pattern为行尾所匹配到的字符串   ${var/%pattern} 八、字符大小写转换 #把var中的所有小写字母转换为大写   ${var^^} #把var中的所有大写字母转换为小写   ${var,,} 九、变量扩展 #扩展以所有prefix开头的变量   ${!prefix*}   ${!prefix@}  十、高级变量 1、赋值   

 2、高级变量用法-有类型变量

Shell变量一般是无类型的,但是bash Shell提供了declare和typeset两个命令用于指定变量的类型,两 个命令是等价的   

 3、变量间接引用

eval命令 eval命令将会首先扫描命令行进行所有的置换,然后再执行该命令。该命令适用于那些一次扫描无法实 现其功能的变量,该命令对变量进行两次扫描   间接变量引用 如果第一个变量的值是第二个变量的名字,从第一个变量引用第二个变量的值就称为间接变量引用 variable1的值是variable2,而variable2又是变量名,variable2的值为value,间接变量引用是指通过 variable1获得变量值value的行为  variable1=variable2 variable2=value #示例:   i=1   $1=wang 

标签:SHELL,第十二天,变量,pattern,编程,字符串,数组,var,word
From: https://www.cnblogs.com/dujy/p/17985818

相关文章

  • Linux网络编程基础API
    目录socket地址API创建socket命名socket监听socket接收连接发起连接关闭连接数据读写带外标记地址信息函数socket选项网络信息APIsocket地址API主机字节序和网络字节序在Linux系统中,主机字节序(HostByteOrder)和网络字节序(NetworkByteOrder)是两个重要的概念。主机字节序......
  • Python并发编程之进程间通信与线程间通信
    进程间通信与线程间通信【一】进程间通信(IPC)​ 进程间通信(Inter-ProcessCommunication,IPC)是指在不同进程之间进行数据交换和信息传递的机制。在多进程系统中,不同进程可能运行在不同的地址空间,因此需要一些特殊的方法来实现它们之间的通信。以下是一些常见的进程间通信的方法:......
  • PowerShell 给命令取一个别名 ( 例子: pnpm -> n)(转载)
    查看一下profile文件的位置执行命令echo$PROFILE1output:C:\Users\Administrator\Documents\PowerShell\Microsoft.PowerShell_profile.ps11以自己电脑实际的输出位置为准(每个人的电脑输出可能不同)修改接下来到这个目录创建/修改这个脚本文件(第一次玩这个功能.应该都没有......
  • ROS2编程入门
    步骤:1.创建功能包;2.编辑源文件;3.编辑配置文件;4.编译;5.执行mkdir创建 colconbuild#编译一.创建功能包在终端创建C++功能包ros2pkgcreate<name>--build-typeament_cmake--dependenciesrclcpp--node-name<name>二.编辑源文件用vscode编写文件内容importrclp......
  • cmd&powershell有时会卡住(假死)的解决办法
    windows10cmd命令提示符/批处理/终端快速编辑模式bug程序运行被阻塞顶部标题栏提示选择需要回车或空格才能继续执行的解决方案... 问题描述:   开启命令行窗口后,按了一下键盘恢复,一下刷新一大片,这个问题就是像是假死一样,也不报错,这是怎么回事呢原因分析:cmd......
  • (19)Powershell字符串合并运算符
    (19)Powershell字符串合并运算符Powershell提供了对字符串的合并运算符,连接运算符-join将一组字符串连接成单个字符串,子字符串按其在命令中出现的顺序添加到生成的字符串中。连接运算符Powershell中字符串的连接运算符的语法如下:-Join<String[]><String[]>-Join参数......
  • (18)Powershell中的字符串拆分运算符
    (18)Powershell中的字符串拆分运算符Powershell中提供了对字符串的拆分操作运算符。-split运算符将一个字符串拆分成多个字符串。拆分运算符拆分运算符用于将一个或多个字符串拆分为多个子字符串。可更改拆分操作的以下元素:(1)定界符。默认为空白,但是可指定字符、字符串、模......
  • 网络编程
    网络编程一、软件开发架构C/S架构Client:客户端(24小时不间断提供服务)Server:服务端(客户需要服务时,就去访问服务端)ps:服务端需要遵循的原则:服务端与客户端都需要有唯一的地址,但是服务端的地址必须固定/绑定对外一直提供服务,稳定运行服务端应该支持并发比如:微信客户端......
  • 升级openssh后出现xshell、CRT等工具无法连接问题
    描述:某工程在进行ssh漏洞修复过程中升级openssh后输入用户名密码被拒绝(如下图)通过带外重定向到操作系统发现日志出现PAMunabletodlopen和 PAMaddingfaultymodule的报错经排查发现是ssh rpm包升级后会修改/etc/pam.d/sshd文件(如下图)和其他服务器对比,正常可登录的/etc......
  • 【面试突击】并发编程、线程池面试实战
    欢迎关注公众号(通过文章导读关注:【11来了】),及时收到AI前沿项目工具及新技术的推送!在我后台回复「资料」可领取编程高频电子书!在我后台回复「面试」可领取硬核面试笔记!前言最近在更新面试突击专栏,我把每一篇将字数都尽量控制在2000字以内,可能在文章里边写的没有那么细致,主要是......