美文网首页Shell
Shell脚本语言:注释、变量及字符串(2)

Shell脚本语言:注释、变量及字符串(2)

作者: 095b62ead3cd | 来源:发表于2018-07-25 15:12 被阅读5次

    一、注释
    示例代码:

      #!/bin/bash
    #输出"Hello world!"
    echo "Hello world!"
    

    在Shell脚本中,没有多行注释,只有单行注释。

    二、变量
    1、变量定义:

    定义变量的时候变量名处不需要加$
    变量名和等号之间不能有空格
    变量名的首字母必须是字母或下划线
    变量名中间不允许有空格
    不允许使用标点符号
    

    2、只读变量:
    关键字:readonly
    示例代码:

    name="abc"
    readonly name
    name="123"
    echo"ready go"
    

    结果:

    iMac03deiMac:Desktop imac03$ ./hello.sh 
    ./hello.sh: line 5: name: readonly variable
    ready go
    

    3、删除变量:
    语法:unset 变量名
    示例代码:

    name="abc"
    echo $name
    unset name
    echo $name
    echo "ready go"
    

    结果:

    abc
    
    ready go
    

    4、变量类型:
    本地变量:作用域整个bash进程 name="name"
    局部变量:作用域当前代码段 local name="name"
    环境变量:作用域当前shell进程及子进程 export name="name"
    位置变量:示例代码:

    #${0}表示脚本文件名称,参数从1开始
    name=${1}
    age=${2}
    sex=${3}
    echo "姓名:${name} 年龄:${age} 性别:${sex}"
    执行脚本:
     ./hello.sh xiaoming 12 男
    执行结果:
    姓名:xiaoming 年龄:12 性别:
    

    特殊变量:
    示例代码:

    name=${1}
    age=${2}
    sex=${3}
    echo ${?} #返回上一个命令执行状态的值  0执行成功 1程序执行结果 2:程序状态返回码(0-255)
    echo $#  #参数个数
    echo $*  #参数列表,将所有参数组成一个字符串
    echo $@  #参数列表,分开的字符串
    echo $$  #获取当前shell进行ID
    echo $!  #执行上一个指令pid
    echo "姓名:${name} 年龄:${age} 性别:${sex}"
    

    执行脚本结果:

     ./hello.sh xiaoming 12 男
    执行结果:
    0
    3
    xiaoming 12 男
    xiaoming 12 男
    3071
    
    姓名:xiaoming 年龄:12 性别:男
    

    三、字符串
    1、定义:单引号,双引号都可以

    name='123'
    echo ${name}
    name="123"
    echo ${name}
    结果:
    123
    123
    

    2、字符串拼接:
    示例代码1:

    name='xiaoming'
    age=18
    sex='男'
    info="${name}${age}${sex}"
    echo ${info}
    
    结果:xiaoming18
    

    示例代码2:

    name='xiaoming'
    age=18
    sex='男'
    info=" 姓名:"${name}"   年龄:"${age}"  性别:"${sex}"  "
    echo ${info}
    
    结果:姓名:xiaoming 年龄:18 性别:男
    

    3、获取字符串长度:{#变量名} 4、字符串截取:{变量名:开始位置:截取长度}
    5、字符串删除:
    语法1:${变量名#删除字符串 正则表达式}
    作用:从字符串开头(左边)开始匹配要删除字符串

    info="姓名:name   年龄:age  性别:sex"
    result=${info#姓名}
    echo ${result}
    结果::name 年龄:age 性别:sex
    

    语法2:${变量名##删除字符串 正则表达式}
    作用:从字符串结尾(右边)开始匹配要删除字符串

    info="姓名:name   年龄:age  性别:sex"
    result=${info##*e}
    echo ${result}
    结果:x
    

    总结:语法1和语法2都是从左边删除到右边,查找方向不一样

    语法3:${变量名%删除字符串 正则表达式}
    作用:从字符串结尾(右边)开始匹配,删除匹配的字符串

    info="姓名:name  sdsfdasdfees 年龄:age  性别:sex"
    result=${info%f*}
    echo ${result}
    结果:姓名:name sdsfdasd
    

    语法4:${变量名%%删除字符串 正则表达式}
    作用:从字符串开头(左边)开始匹配要删除字符串

    info="姓名:name  sdsfdasdfees 年龄:age  性别:sex"
    result=${info%%f*}
    echo ${result}
    结果:姓名:name sds
    

    总结:

    从左边删除到右边
             #->表示查询方向从左到右
            ##->表示查询方向从右到左
    从右边删除到左边
            %->表示查询方向从右到左
            %%->表示查询方向从左到右
    

    相关文章

      网友评论

        本文标题:Shell脚本语言:注释、变量及字符串(2)

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