• shell脚本进阶-EOF


    EOF 多行重定向

      执行脚本的时候,需要往一个文件里自动输入N行内容。如果是少数的几行内容,还可以用echo追加方式,但如果是很多行,那么单纯用echo追加的方式就显得愚蠢之极了!
    这个时候,就可以使用EOF结合cat命令进行行内容的追加了。EOF一般会配合cat能够多行文本输出.

      cat  本质上是对于输入的内容进行打印,支持标准输入,所以后面可以跟文件,把文件的内容进行打印,直接cat是针对于一行的操作,如 cat >>cattest.txt  向文件中追加内容,是一行一行的追加,输入一行回车后,就会把一行的内容写入到文件中,实时生效的。而如果使用了EOF多行重定向技术,则不是一行一行的生效,而是一次性的输出了多行或向文件中添加了多行。这种可以用于脚本中,通过脚本去修改一个文件多行内容。

      cat  << EOF   //输出多行

     cat >> cattest.txt  << EOF                  //或者cat << EOF >> cattest.txt          //向文件中添加多行

       cat > cattest.txt  << EOF                  //或者cat << EOF > cattest.txt          //向文件中添加多行覆盖

    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完成。

    要有多努力才能对得起奔波的脚步和身上的期望
  • 相关阅读:
    提升云桌面登录账号安全,宁盾双因素认证“护航”齐鲁制药移动办公
    关于双因素认证(2FA),这些基础知识你一定要知道
    3天时间,如何用双因素认证帮5000名员工实现远程办公账号安全
    企业快速发展,新技术新场景频出,如何构建身份管理体系支撑企业持续发展变革?
    关于ADFS的局限性,你了解多少?
    初创公司如何布局零信任网络安全?
    什么是身份和访问管理(IAM)?
    为什么是时候迎接远程办公了?
    无密码就是最好的密码,深入解析免密认证的方法和实例
    带你了解免密认证的优势和挑战
  • 原文地址:https://www.cnblogs.com/hxfcodelife/p/12019866.html
Copyright © 2020-2023  润新知