字符串

作者: 六月天的安静 | 来源:发表于2017-07-09 22:00 被阅读6次

    字符串字符串切片

    • ${#var}: 返回字符串变量var 的长度

    • ${var:offset}: 返回 字符串变量var 中从第offset 个字符后(不包括第offset 个字符)的字符开始,到最后的部分,offset的 的取值在0 到 到 ${#var}-1 之间(bash4.2 后,允许为负值)

    • ${var:offset:number} :返回 字符串变量var 中从第offset个字符 后(不包括第offset 个字符)的字符开始 ,长度为number 的部分

    • ${var: -length} :取字符串的最右侧几个字符
      注意:冒号后必须有一空白字符

    • ${var:offset:-length} :从最左侧跳过offset 字符,一直向右取到距离最右侧lengh 个字符之前的内容

    • ${var: -length:-offset} :先从最右侧向左取到length 个字符开始,再向右取到距离最右侧offset 个字符之间的内容

    字符串处理

    • [x] 基于模式取子串

    • ${var#*word} :其中word 可以是指定的任意字符功能:自左而右,查找var 变量所存储的字符串中,第一次出现的word, 删除字符串开头至第一次出现word 字符之间的所有字符

    • ${var##*word} :同上,贪婪模式,不同的是,删除的是字符串开头至最后一次由word 指定的字符之间的所有内容

        示例:
        file="var/log/messages“
        ${file#*/}: log/messages
        ${file##*/}: messages
      
    • ${var%word*} :其中word 可以是指定的任意字符;功能:自右而左,查找var 变量所存储的字符串中,第一次出现的word, 删除字符串最后一个字符向左至第一次出现word 字符之间的所有字符;

        例子:
        file="/var/log/messages"
        ${file%/*}: /var/log
      
    • ${var%%word*} :同上,只不过删除字符串最右侧的字符向左至最后一次出现word 字符之间的所有字符;

        示例:
        url=http://www.magedu.com:80
        ${url##*:} 80
        ${url%%:*} http
      

    查找替换

    • ${var/pattern/substr} :查找var 所表示的字符串中,第一次被pattern 所匹配到的字符串,以substr 替换之
    • ${var//pattern/substr}: 查找var 所表示的字符串中,所有能pattern 所匹配到的字符串,以substr 替换之
    • ${var/#pattern/substr} :查找var 所表示的字符串中,行首被pattern 所匹配到的字符串,以substr 替换之
    • ${var/%pattern/substr} :查找var 所表示的字符串中,行尾被pattern 所匹配到的字符串,以substr 替换之

    查找并删除

    • ${var/pattern} :删除var 所表示的字符串中第一次被pattern 匹配到的字符串
    • ${var//pattern} :删除var所表示的字符换中所有被pattern所匹配到的字符串
    • ${var/#pattern} :删除var所表示的字符串中所有以pattern为行首所匹配到的字符串
    • ${var/%pattern} :删除var所表示的字符串中所有以pattern为行尾所匹配到的字符串
    • [x]字符大小写转换
    • ${var^^} :把var 中的所有小写字母转换为大写
    • ${var,,} :把var 中的所有大写字母转换为小写

    变量赋值

    • ${var:-value} :如果var 为空或未设置,那么返回value ;否则返回var 的值,可省略:

    • ${var:+value} :如果var 不空,则返回value ,否则返回空值

    • ${var:=value} :如果var 为空或未设置,那么返回value ,并将value 赋值给var ;否则返回var 的值

    • ${var:?error_info} :如果var 为空或未设置,那么在当前终端打印error_info ;否则返回var 的值 为脚本程序使用配置文件, 实现变量赋值
      (1) 定义文本文件,每行定义“name=value”
      (2) 在脚本中source 此文件即可
      高级变量用法- 有类型变量
      Shell 变量一般是无类型的,但是bash Shell 提供了declare和typeset 两个命令用于指定变量的型,两个命令是等价的
      declare [ 选项] 变量名

        -r  声明或显示只读变量
        -i  将变量定义为整型数
        -a  将变量定义为数组
        -A  将变量定义为关联数组
        -f  显示此脚本前定义过的所有函数名及其内容
        -F  仅显示此脚本前定义过的所有函数名
        -x  声明或显示环境变量和函数
        -l  声明变量为小写字母 declare –l var=UPPER
        -u  声明变量为大写字母 declare –u var=lower

    相关文章

      网友评论

          本文标题:字符串

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