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

一、信号捕捉 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 
posted @ 2024-01-24 21:59  djyhello  阅读(33)  评论(0编辑  收藏  举报