zoukankan      html  css  js  c++  java
  • Shell入门(三)之字符串

    一、单引号

    字符串可以用单引号,也可以用双引号,也可以不用引号。单双引号的区别跟PHP类似。

    单引号不存在转义字符,如:a, ,$abc

    #!/bin/bash
    a='abc'
    b='${a}bc';
    echo $b;       #结果为:${a}bc

    单引号字符串的限制:

    (1)单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;

    (2)单引号字串中不能出现单引号(对单引号使用转义符后也不行)。

    二、双引号

    双引号的优点:

    (1)双引号里可以有变量

    (2)双引号里可以出现转义字符

    #!/bin/bash
    a="abc"
    b="${a}bc";
    echo $b;       #结果为:$abcbc

    三、字符串连接

    #!/bin/bash
    a="abc"
    b=$a"d"
    c=$b'e'
    echo $a $b $c

    四、字符串长度

    ${#string}获取长度

    `expr length 字符串`   字符串可以加'或" ,其中"适用于所有字符,包括转义字符,变量

     注意使用的是反引号 ` 而不是单引号 '

    #!/bin/bash
    a='abc'
    echo ${#a}     #3
    echo `expr length "字符串"`  #9  中文占3个字节

    五、提取子字符串

    ${string:start}     从字符串第 start 个字符开始截取到字符串末尾,下标从0开始

    ${string:start:length}  从字符串第 start 个字符开始截取 length个字符,下标从0开始

    ${string:0-start}     从字符串倒数第 start 个字符开始截取到字符串末尾

    ${string:0-start:length}  从字符串倒数第 start 个字符向右开始截取 length个字符

    `expr substr 字符串 start  length`  下标从1开始,字符串可以加'或" ,其中"适用于所有字符,包括转义字符,变量

    #!/bin/bash
    a='abcdefg'
    echo ${a:2}      #cdefg
    echo ${a:2:2}    #cd
    echo ${a:0-1}    #g
    echo ${a:0-5:4}  #cdef
    echo `expr substr "$a" 1  2`    #ab

    六、在字符串查找字符

    下标从1开始,查找不到返回0

    `expr index 字符串 匹配字符`

    字符串与匹配字符都可以加'或" ,其中"适用于所有字符,包括转义字符,变量

    #!/bin/bash
    a='welcome to learn shell'
    echo `expr index "$a" co`                              #4
    b='b'
    echo `expr index b字符串 匹配字符`                      #2
    echo `expr index "b字符串" '匹配字符'`           #2
    echo `expr index "b字符串" "${b}匹配字符"`         #1

    七、正则匹配

    `expr match 字符串 匹配字符串`     匹配字符串开头的子串,返回匹配到的子串的长度,若找不到则返回0

    字符串与匹配字符串都可以加'或" ,其中"适用于所有字符,包括转义字符,变量

    #!/bin/bash
    a='welcome to learn shell'
    echo `expr match "$a" w.*a`     #14
    echo `expr match "$a" e.*a`     #0  尽管字符串包含e.*a,但不以w开头    

    八、删除  支持通配符*与?、+等

    ${string#删除子串}     删除左边最小的匹配string开头的子串

    ${string##删除子串}   删除左边最大的匹配string开头的子串

    ${string%删除子串}     删除右边最小的匹配string末尾的子串

    ${string%%删除子串}   删除右边最大的匹配string末尾的子串

    #!/bin/bash
    a='welcome to learn shell'
    echo  ${a#e*e}      #welcome to learn shell   没有匹配$a的开头
    echo  ${a#w*e}      #lcome to learn shell
    echo  ${a##w*e}     #ll                   
    echo  ${a%e*l}      #welcome to learn sh
    echo  ${a%%e*l}     #w

    九、替换  支持通配符*与?、+等

    ${string/被替换串/替换串}

    ${string//被替换串/替换串}

    #!/bin/bash
    a='welcome on welcome'
    echo  ${a/e*c/x}       #wxome
    echo  ${a/e*c/x}       #wxome
    echo  ${a//el/a}       #wacome on wacome
  • 相关阅读:
    Ztree下拉框多选
    FullCalendar日程插件
    viscose 前端常用插件
    一些词
    关于require()和export引入依赖的区别
    关于CMD/AMD和Common.js/Sea.js/Require.js
    vue中的双向数据绑定原理简单理解
    Vue-cli简单使用
    webpack简单配置
    vuex基础
  • 原文地址:https://www.cnblogs.com/maokun/p/7418827.html
Copyright © 2011-2022 走看看