• shell脚本


    shell执行脚本是一门解释性语言、批量化处理语言,大大的节省了工作成本

    shell脚本第一行必须以 #!开头,它表示该脚本使用后面的解释器解释执行。

    #!/bin/bash

    1.常见的通配符:

    * : 匹配0个或多个任意字符

    ? : 匹配一个任意字符

    [若干字符] : 匹配方括号中任意一个字符的一次出现

    2.命令代换:
    反引号``  或者  $()

    //查某个容器的编号,赋值给num变量

    num=$(docker ps -a | grep -i "test" | awk '{print$1}')

    3.单引号和双引号

    Shell脚本中的单引号和双引号一样都是字符串的界定符,单引号用于保持引号内所有字符的字面值,而双引号有些情况则特殊。如果字符串中有特殊字符需要处理时就用双引号。

    注:单引号标注的字符中不能再出现单引号。

     4.条件判断 流程控制
      "if" 表达式 如果条件为真则执行then后面的部分:
    if ....; then
      ....
    elif ....; then
      ....
    else
      ....
    fi

    通常用" [ ] "来表示条件测试。注意这里的空格很重要。要确保方括号的空格。
    [ -f "somefile" ] :判断是否是一个文件
    [ -x "/bin/ls" ] :判断/bin/ls是否存在并有可执行权限
    [ -n "$var" ] :判断$var变量是否有值
    [ "$a" = "$b" ] :判断$a和$b是否相等

    例如:

    #!/bin/sh
    if [ "$SHELL" = "/bin/bash" ]; then
     echo "your login shell is the bash (bourne again shell)"
    else
     echo "your login shell is not bash but $SHELL"
    fi

    5.输出变量前加$。例如:echo $num 或者明确一些 echo ${num}

    6.执行shell脚本。先修改脚本权限增加可执行:chmod +x filename

    然后,您可以通过输入: ./filename 来执行您的脚本。或者sh filename

    7.SED 命令,替换数据

    1.把开头/结尾为str1的行替换为str2:

    sed -i 's/^str1.*/str2/'  filename  ###以str1开头
    sed -i 's/.*str1$/str2/'  filename  ###以str1结尾
    sed -i 's/.*str1.*/str2/'  filename  ###含有str1
    sed -i 's/旧字符串/新字符串/g' filename

    2.将文件中含 "arr" 字符串的数据行中的 "str1" 字符串 , 替换成为 "str2" 字符串:

    sed -e '/arr/s/str1/str2/g' filename  ##含有g说明是全局替换

    3.将文件中第 5 行数据 , 替换成句子"hello world!!!"

    sed -e '5chello world!!!' filename

    4.将文件中 1 至 100 行 , 替换成如下两行:

    how are you?
    my name is feige.

    命令如下:

    sed -e '1,100c
    How are you?
    my name is feige.
    ' filename

    删除数据

    1.删除空行:

    sed -e '/^ *$/d' filename   ### *号前面有一个空格符哦~

    2.删除含有指定字符串str的行:

    sed -f '/str/d' filename

    移动数据

    1.将文件中的前 100 数据 , 搬到文件中第 300 后输出。其命令如下:

    sed -f mov.txt  targetfile  ## targetfile是要操作的文件,mov.txt里面放的是操作指令

    其中mov.txt文档的内容为:

    1,100{
    H
    d
    }
    300G

    2.将from.txt文件中含 "phi" 字符串的数据行 , 移动到to.txt文件中储存。其命令如下:

    sed -e '/phi/w to.txt'  from.txt

    3.将 from.txt文件内容 , 移动至to.txt文件中含 "beta" 字符串的数据行。其命令如下:

    sed -e '/beta/r  from.txt' to.txt

    搜索数据

    1.将文件中含 "omega" 字符串的数据输出:

    sed -f grep.txt  targetfile

    其中grep.txt的内容如下:

    /omega/b
    N
    h
    s/.*
    //
    /omega/b
    g
    D
  • 相关阅读:
    反射 动态导入 元类
    面向对象的继承
    面向对象基础总结
    面向对象基础
    包 logging hashlib copy模块
    os random sys json 模块
    【1012 | Day 43】前端之CSS(下)
    【1011 | Day 42】灵魂拷问:数据放在服务端和客户端的利与弊?
    【1011 | Day 42】socket实现ftp文件的上传和下载
    【1011 | Day 42】前端之CSS(上)
  • 原文地址:https://www.cnblogs.com/huangxiaoying/p/6598859.html
Copyright © 2020-2023  润新知