• shell脚本的练习


    创建一个以.sh结束的文件.

      规则:

      文件的头部使用#!/bin/sh 开头   这个是一个标识的作用,告诉使用哪种脚本来执行

      echo 用来向命令行来输出的东西

      在这之前,我们先看shell 环境变量的问题。

      

      set 设置当前shell 进程的本地变量

      env 仅为将要执行的子进程进行设置

      export 将一个shell本地环境变量,变为 当前shell的环境变量,从而被子进程自动继承,但是不能改变父级的环境变量

      source 运行脚本的时候,不会启动一个新的shell进程,而是在当前shell 环境中运行脚本,意思就是按照脚本的顺序进行执行

      exec 不会启动一个新的进程,exec 之后的脚本也不会执行,也就是说,之后,程序就结束了。

      重定向

      >    重定向到文件,会进行覆盖

      >!  重定向到文件,强制覆盖

      >> 定向到文件,进行追加

      2> 将一个标准错误,重定向到一个文件

      2>> 将一个标准错误,追加到一个我呢见

      2>&1 将一个标准错误重新定向到标准输出

      |&  将一个标准错误 管道 输送 到另一个命令作为输入     

         &>filename 意思是把标准输出和标准错误输出都重定向到文件filename

      ! 序号    执行历史命令序号对应的命令


     字符串截取

    ${name:0:2}   截取字符串,  从第几位开始,截取多长

    basename  去除路径,如  a/b/c/test.txt   输出为test.txt

    dirname 剩余路径

    $0 代表文件本身 带着路径

    字符串替换

    ${name/3/4}   替换第一个3,为4

    ${name//3/4} 替换所有的3 为4

    字符串去头去尾

    去头 第一个匹配#   最后一个匹配##     如  ${name#:} 不包括冒号

    去尾%           如  ${name%:*}


    expect  自动交互工具      expect 等待是有限制的,所以有时候,需要设置超时时间

    它的核心是 spawn  expect  send  set

    其中   spawn  调用要执行的命令

    expect  等待命令提示

    send 发送需要的值

    set 设置环境变量

    expect脚本必须以interact或expect eof结束,执行自动化任务通常expect eof就够了

    例子:

    #!/binbash

    意思就是   执行命令,期待出现什么,发送什么东西 

    expect <<EOF

    set timeout 10

        spawm ssh 192.168

     expect   "password"  {send "exit "}

    EOF


     正则表达式

    [ ]  代表集合,表中其中的任意单个字符  连续的东西,可以使用 - 进行连接

    [0-9] 

    [a-z]

    ^  开始

    [^ ]   对集合取反

    $ 结尾

    .  代表任意单个字符

    .* 任意字符

    a* 代表a ,同一个字符出现任意次数

    a{n,m}  a 出现 n 到m 出现的次数

    ?子表达式 0 次或 1 次,等同于 {0,1}

    + 至少一次

     () 代表就是一个整体

    | 或者

      单词边界


    sed 文本编辑器(非交互编辑器)非常适合处理大文件

      sed   [选项]        条件指令(指定行)       文件

       -r  扩展正则

         

         -i   直接修改源文件

        -n    屏蔽sed的默认输出功能   默认会打印每一行

            p 打印 print

            d :删除

            s 替换   '行号s/old/new/2'   将每一行的第二个替换,  将2 换成g 全部替换

      

    1. clone-vm [快速生成虚拟机]

    2.创建一个模板虚拟机 [img,xml]

    3. qemu-img ceate    [磁盘]  b.img  


    过滤数据  awk

      grep (行)

            行  列

      awk [选项]   '/正则/条件指定{print}'    文件         cat  pom.xml | awk '/<id>/{print $1}' 或者 awk '/<id>/{print $1}'   pom.xml

                    -F:    指定分隔符为冒号  默认使用的是空格

                                                      $1 换成 NR   打印行号    NF 是列数   $NF 最后的字符串

        

          

      

      

     

     

     

      

  • 相关阅读:
    知识点复习
    【程序人生】一个IT人的立功,立言,立德三不朽
    【朝花夕拾】Android多线程之(三)runOnUiThread篇——程序猿们的贴心小棉袄
    【朝花夕拾】Android多线程之(二)ThreadLocal篇
    【朝花夕拾】Android多线程之(一)View.post()篇
    Camera2笔记
    HangFire多集群切换及DashBoard登录验证
    Linq 动态多条件group by
    Api接口签名验证
    postgre ||连接字段
  • 原文地址:https://www.cnblogs.com/chengyangyang/p/9674853.html
Copyright © 2020-2023  润新知