• BASH内置变量的使用


    内部变量

    $$与$BASHPID都代表着执行程序的进程ID,我们可以通过echo打印,并使用ps指令检查得到相同的进程ID
    -echo $$
    -echo $BASHPID
    -ps ax | grep bash
    =11015pts/2    R    0:00
        /bin/bash
    
    位置参数(一)
    。我们经常向一个程序传递以空格间隔的参数,我们按先后次序分成$0(脚本本身),$1(参数1),$2(参数2)......
    。$#表示参数数量的总数,也就是总共有多少参数
    。$*所有的参数以一行显示
    。$@所有的参数以空格分隔
    。E_BADARGS=65
    。if [ ! -n "$1" ]
    。then
        -echo "Usage: 'basename $0' arg1 arg2 ..."    #提示脚本使用方法
        -exit $E_BADARGS    #退出返回自定义错误代码
        fi

    强制退出程序本身示例(一)

    。$!代表进程本身
    。vi &     #此处运行了一个vi编辑工具以便测试
    。{ sleep ${TIMEOUT};    #休眠一定时间
    。eval 'kill -9  $!' &>/dev/null;}    #杀死进程本身
    。eval 可以对字符串的代码当成bash代码并运行,等同于
    。"和$()  

    强制退出程序本身示例(二)

    TIMEOUT=30    #超时时间
    count=0    #初始值
    vi  &  {
        while ((count < TIMEOUT )) ;do
            eval ' [! -d "/proc/$!"] && ((count = TIMEOUT))'
            ((count++))    #计数器递增
            sleep 1
        done
    eval ' [ -d "/proc/$!" ] && kill -l5 $!'    #判断程序运行后是否在/proc下存在以进程ID的目录夹,如果存在杀死该进程
    }
    。(())中变量无需在变量前使用$,而且没有空格的局限性  

    字符长度

    。这三种方法都可以取出字符串的长度
        ${#string}
        expr length $string
        expr "$string":'.*'
    。stringZ=abcABC123ABCabc
    。echo ${#stringZ}    #得到15
    。echo 'expr length $stringZ'    #得到15
    。echo 'expr "$stringZ" : '.*'‘    #得到15  

    表达式方式取长度

    。依据正则表达式取得相匹配部分的长度,注意表达式要用单引号
    。expr match ”$string" '$substring’
    。expr “$string" : '$substring'
    stringZ=abcABC123ABCabc
        #    |---------|
        #    12345678
    echo 'expr match "$stringZ" 'abc[A-Z]*.2''    # 得到8
    echo 'expr "$stringZ" : 'abc[A-Z]*.2''    #    得到8  

    子字符串的提取(符号)

    。根据字符的位置提取字符串中一段,注意此方法索引由0开始
    。${string:position}
    。${string:position:length}
    
    stringZ=abcABC123ABCabc
    #0123456789......
    echo ${stringZ:0}    #没有给定长度,又从0(第一个字符)开始,江区所有的字符得到abcABC123ABCabc
    echo ${stringZ:1}    #从1(第二个字符)开始得到bcABC123ABCabc
    echo ${stringZ:7}    #从7(第八个字符)开始得到23ABCabc
    echo ${stringZ:7:3}    #从第八个字符开始,取三个字符得到23A 

     

    子字符串的提取(函数)

    。也可以使用substr函数提取,注意这个函数索引从1开始
    。expr substr $string $position $length
    
    stringZ=abcABC123ABCabc
    #    123456789......
    echo 'expr substr $stringZ 1 2'    #得到ab
    echo 'expr substr $stringZ 4 3'    #得到ABC
    

      

  • 相关阅读:
    MySQL Binlog 权限
    木槿
    easyconnect for docker
    批量导出指定表的建表语句
    Linux 安装 mysql 5.7
    课程表插件(vue直接引入样式)timeTables
    springcloud+gateway微服务整合swagger
    Flutter+Android Stodio
    Mysql8 示例
    用Gzip数据压缩方式优化redis大对象缓存
  • 原文地址:https://www.cnblogs.com/hongjinping/p/14020883.html
Copyright © 2020-2023  润新知