首页 > 系统服务 > 详细

shell脚本进阶

时间:2019-12-16 15:10:06      阅读:100      评论:0      收藏:0      [点我收藏+]

 

for循环

技术分享图片 

在脚本中 两种写法,不同的习惯而已

技术分享图片     技术分享图片

 

函数

技术分享图片

declare -f
declare -F
函数定义只针对于当前窗口有效
unset funcname  删除方法

 

脚本 func_test
函数定义与调用函数 相分离
函数也可以使用参数

 信号捕捉

  • trap ‘触发指令‘ 信号  进程收到系统发出的指定信号后,将执行自定义指令,而不会执行原操作
  • trap ‘‘ 信号  忽略信号的操作
  • trap ‘-‘ 信号  恢复原信号的操作
  • trap -p  列出自定义信号操作
  • trap finish EXIT   当脚本退出时,执行finish函数
  • trap finish EXIT  脚本退出时,运行的函数,无论什么样的退出,错误的还是正常退出都会发生的。

      技术分享图片

 

数组

数组:存储多个元素的连续的内存空间,相当于多个变量的集

数值数组,不用声明,可以直接用,而自定义数组需要先声明

 技术分享图片

技术分享图片

 

数组 一次赋多个值,可以看出本质上就是 空格隔开,这种结构可以有很多种方式实现

 技术分享图片

 技术分享图片

 稀疏数组,不连续

技术分享图片

 

 交互式的赋值

技术分享图片

 

 自定义下标

技术分享图片

 

字符串截取

技术分享图片

 

技术分享图片

 

declare [选项] 变量名

  • -r 声明或显示只读变量
  • -i 将变量定义为整型数
  • -a 将变量定义为数组
  • -A 将变量定义为关联数组
  • -f 显示已定义的所有函数名及其内容
  • -F 仅显示已定义的所有函数名
  • -x 声明或显示环境变量和函数
  • -l 声明变量为小写字母 declare –l var=UPPER
  • -u 声明变量为大写字母 declare –u var=lower

 

eval命令 

该命令对变量进行两次扫描 

[root@server ~]# CMD=whoami

[root@server ~]# echo  $CMD 

  whoami

[root@server ~]# eval $CMD 

  root     

[root@server ~]# n=10             

[root@server ~]# echo {0..$n}         

  {0..10}     

[root@server ~]# eval echo {0..$n}     

  0 1 2 3 4 5 6 7 8 9 10 

 

mktemp 创建临时文件

mktemp  fileXXXX

技术分享图片

 

 -d: 创建临时目录 

-p DIR或--tmpdir=DIR:指明临时文件所存放目录位置 

技术分享图片

 

install 复制命令 顺便可以设置权限

技术分享图片

 

 expect

有时候我们执行命令,会交互式的问你,等待用户去输入东西,那如果是写在脚本中,也会提示让你输入的,但是我们写在脚本中,就是为了自动化的,所以可以使用expect工具,当出现某一些字符的时候,可以自动输入一些字符。

比如我们可以自动化的传一个文件,到很多台服务器上,以前的方式就是我们手动一个一个传,那多累,有脚本瞬间可以完成一百台服务器的文件拷贝工作。就是通过expect完成。

shell脚本进阶

原文:https://www.cnblogs.com/hxfcodelife/p/12019866.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!