美文网首页linux
linux编写脚本指南

linux编写脚本指南

作者: 风一样的存在 | 来源:发表于2019-03-28 13:08 被阅读0次
    1. linux命令作为返回值
      反引号包裹的字符串,当作命令执行返回
    pid = `ps -ef|grep gerapy|grep -v grep|awk '{print $2}'`
    if ["$pid" = ""] ; then
        echo "gerapy is shutdown now!"
    else
        kill -9 $pid
    fi
    

    当然也可以用$?获取返回值

    1. shell解析json字符串
      使用场景:curl请求后的结果是json数据,要获取json中的某一个字段。
    #!/bin/bash
    s="{\"rv\":0,\"flag\":1,\"url\":\"http://www.jinhill.com\",\"msg\":\"test\"}"
    parse_json(){
    #echo "$1" | sed "s/.*\"$2\":\([^,}]*\).*/\1/"
    echo "${1//\"/}" | sed "s/.*$2:\([^,}]*\).*/\1/"
    }
    echo $s
    value=$(parse_json $s "url")
    echo $value
    
    运行结果: 运行效果
    1. shell解析请求链接上的query参数
    #!/bin/bash
    s="http://www.zonetec.cn/WlanAuth/portal.do?appid=aaaa&apidx=0"
    parse(){
     echo $1 | sed 's/.*'$2'=\([[:alnum:]]*\).*/\1/'
    }
    value=$(parse $s "appid")
    echo $value
    
    运行结果: 运行效果
    1. 获取当前时间
    time=$(date "+%Y-%m-%d %H:%M:%S")
    echo $time
    time=$(date "+%Y%m%d%H%M%S")
    echo $time
    
    1. 字符串截取
    • #号截取,删除左边字符,保留右边字符
    # (#号是运算符),*// 表示从左边开始删除第一个 // 号及左边的所有字符
    var='http://www.linuxidc.com/123.htm'
    echo ${var#*//}
    # 输出结果:www.linuxidc.com/123.htm
    
    • ##号截取,删除左边字符,保留右边字符
    # (##*/)表示从左边开始删除最后(最右边)一个 / 号及左边的所有字符
    var='http://www.linuxidc.com/123.htm'
    echo ${var##*/}
    # 输出结果:123.htm
    
    • %号截取,删除右边字符,保留左边字符
    # (%/*)表示从右边开始,删除第一个 / 号及右边的字符
    var='http://www.linuxidc.com/123.htm'
    echo ${var%/*}
    # 输出结果: http://www.linuxidc.com
    
    • %%号截取,删除右边字符,保留左边字符
    # (%%/*)表示从右边开始,删除最后(最左边)一个 / 号及右边的字符
    var='http://www.linuxidc.com/123.htm'
    echo ${var%%/*}
    # 输出结果:http:
    
    • 根据下标截取
    # 从左边第几个字符开始,及字符的个数
    echo ${var:0:5}
    # 表示左边第8个字符开始,一直到结束
    echo ${var:7}
    # 表示右边算起第7个字符开始,3 表示字符的个数
    echo ${var:0-7:3}
    # 从右边第几个字符开始,一直到结束
    echo ${var:0-7}
    
    运行结果: 运行结果
    1. 字符串拼接
      单引号和双引号的区别。单引号告诉shell忽略所有特殊字符,而双引号忽略大多数,但不包括$、\、`
    echo 'the date is `date`'
    # 输出结果:the date is `date`
    echo "the date is `date`"
    # 输出结果:the date is 2019年 3月28日 星期四 12时05分37秒 CST
    var1='/etc/'
    var2='software/packages/'
    echo ${var1}${var2}
    # 输出结果:/etc/software/packages/
    
    1. 去除字符串空格
    • 去除字符串行首空格
      sed 's/^[ \t]*//g'
    • 去除字符串行末的空格
      sed 's/[ \t]*$//g'
    • 去除字符串中所有的空格
      sed 's/[[:space:]]//g'

    相关文章

      网友评论

        本文标题:linux编写脚本指南

        本文链接:https://www.haomeiwen.com/subject/jvbxbqtx.html