zoukankan      html  css  js  c++  java
  • (五)shell字符串深入解析

    (1)基本用法

    1) 由单引号' '包围的字符串:

    • 任何字符都会原样输出,在其中使用变量是无效的。
    • 字符串中不能出现单引号,即使对单引号进行转义也不行


    2) 由双引号" "包围的字符串:

    • 如果其中包含了某个变量,那么该变量会被解析(得到该变量的值),而不是原样输出。
    • 字符串中可以出现双引号,只要它被转义了就行。


    3) 不被引号包围的字符串

      • 不被引号包围的字符串中出现变量时也会被解析,这一点和双引号" "包围的字符串一样。
      • 字符串中不能出现空格,否则空格后边的字符串会作为其他变量或者命令解析。
    #!/bin/bash
    #单引号有问题
    n=56
    a1=num=$n
    a2='num=$n'
    a3="num=$n"
    echo $a1
    echo $a2
    echo $a3
    
    #无引号有问题
    #b1=china is nice
    b2='china is nice'
    b3="china is nice"
    echo $b1
    echo $b2
    echo $b3
    
    #获取字符串长度
    c1="super star is reba"
    echo ${#c1}

    结果:

    (2)字符串截取

    #!/bin/bash
    
    #字符串拼接 两个str放在一起
    a1="迪丽热巴"
    a2="欧阳图图"
    
    b1=$a1$a2
    b2='$a1 and $a2'
    b3="$a1 and $a2"
    b4=a1':'a2
    
    echo $b1
    echo $b2
    echo $b3
    echo ----------------------
    
    #通过位置截取
    #与python的切片类似
    # ${截取的字符串:起始位置从0开始:截取的长度}
    #左边往后: ${string:start:length}
    #右边往后: ${string:0-start:length}
    c1="the star in my heart is reba"
    c2="迪丽热巴"
    echo ${c2:2:2}
    echo ${c1:3:10}
    echo ${c2:0-2:4}
    echo ${c1:0-3:10}
    #并没有正在截取到原字符串
    echo $c2
    echo $c1
    echo ----------------------
    
    #通过指定字符截取
    # ${截取的字符串#*指定字符}
    # #:表示可以截取指定字符右边所有的字符
    # *:通配符,表示任意长度的字符串
    echo ${c1#star}
    echo ${c1#*star}
    
    echo ${c2#热}
    echo ${c2#*热}
    
    echo ----------------------
    url="https://www.cnblogs.com/oytt/p/13398266.html"
    url2="rr=aa==tt===aa++99"
    echo ${url#*/} #遇到第一个匹配结束
    echo ${url##*/} #遇到最后一个匹配结束
    
    echo ${url2#*aa}
    echo ${url2##*aa}
    echo ----------------------
    
    #通过%截取左边字符
    # ${string%chars*}
    echo ${url%/*} #遇到第一个匹配结束
    echo ${url%%/*} #遇到最后一个匹配结束
    echo ${url2%aa*}

     

    来自shell的随笔均参考自 http://c.biancheng.net/view/1114.html

    做一个优秀的程序媛
  • 相关阅读:
    我认为的架构师
    Jenkins github账号密码验证方式失效 解决方式
    android逆向奇技淫巧二十一:ida反反调试&加密算法跟踪(未完待续)(六)
    android逆向奇技淫巧十九:unidbg模拟执行和trace x音so代码(四)
    android逆向奇技淫巧十八:x音so层代码花指令防护分析(三)
    android逆向奇技淫巧十七:android客户端自动x红包(一):代码原理分析
    测试工具安装汇总
    javascript事件节流和防抖
    CompletableFuture-更优雅的使用多线程
    青春
  • 原文地址:https://www.cnblogs.com/oytt/p/13398266.html
Copyright © 2011-2022 走看看