• Shell基础知识(四)


    字符串详解
    字符串可以由 单引号/双引号/无引号 包围。如下所示
    >>
    str1=hello
    str2="hello"
    str3='hello'
    <<
    三种形式的区别:
    1)由单引号包围
    字符原样输出,不对其中的变量进行解析。并且在字符串中不能出现单引号,即使加了转义字符也不行。
    2)由双引号包围
    如果字符串中存在变量,那么会对变量进行解析。可以存在双引号,只要由转义字符就行。
    3)没有符号包围
    如果有变量同样也会被解析,但是不能出现空格,否则,会认为空格后面的内容是其他变量或者字符串解析。
     
    获取字符串长度
    #!/bin/bash
    str="hello world!"
    echo ${#str}
    字符串拼接
    shell中字符串拼接不需要任何操作符,很简单粗暴。
    #!/bin/bash
    nick_name="mocun"
    name="yinzm"

    str1=$nick_name$name
    str2="$nick_name $name"
    str3=$nick_name" : "$name
    str4="$nick_name : $name"
    str5="${nick_name} : ${name}"

    echo $str1
    echo $str2
    echo $str3
    echo $str4
    echo $str5
    字符串截取
    可以从左边开始,也可以从右边开始截取。
    #!/bin/bash
    str="hello,world!"
    echo ${str:6:5}
    echo ${str:6}
    echo ${str:0-6:5}
    echo ${str:0-6}
    输出:

    world

    world!

    world

    world!

     

    shell还支持指定字串进行截取

     

    #!/bin/bash
    url="https://www.google.com"

    echo ${url#*://}
    echo ${url#*//}

    其中#用来指定字符,*为通配符的一种,表示任意长度的字符串。*chars的意思就是忽略左边的所有字符,直到chars,并且不包含chars。指定字串进行截取不能限定截取长度。

     

    如果在字符串中有多处出现指定的字符,那么只会在第一次遇到指定字符的时候开始截取。如果想改成最后一次遇到指定字符开始截取,使用##*的方式。如下:

     

    #!/bin/bash
    url="https://www.google.com"

    echo ${url#*w}
    echo ${url##*w}

    输出:

    ww.google.com 

    .google.com

     

    类似的,也可以截取指定字符左边的字串。具体语法可以看示例:

     

    #!/bin/bash
    url="https://www.google.com"

    echo ${url%.*}
    echo ${url%%.*}

    输出:

    https://www.google

    https://www





  • 相关阅读:
    linux之 awk
    linux之 sed命令
    HBase源码分析之WAL
    oracle之 单实例监听修改端口
    oracle之 ORA-12557: TNS: 协议适配器不可加载
    oracle之 反向键索引
    oracle之 AWR固定基线
    oracle之 如何 dump logfile
    oracle 之 CLUSTER_INTERCONNECTS is not set to the recommended value
    oracle之 变更OS时间对数据库的影响
  • 原文地址:https://www.cnblogs.com/yinzm/p/10325061.html
Copyright © 2020-2023  润新知