echo的使用和{}的替换结构

Posted NicolasNRH

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了echo的使用和{}的替换结构相关的知识,希望对你有一定的参考价值。

@TOC

echo的使用和的替换结构

echo的使用技巧

  • echo -n:表示不换行输出

  • echo -e:输出转义字符,将转义后的内容输出到屏幕上

    常用的转义字符如下:

    • \\b:转义后相当于按退格键(backspace),但前提是"\\b"后面存在字符;"\\b"表示删除前一个字符,"\\b\\b"表示删除前两个字符。

    • \\c:不换行输出,在"\\c"后面不存在字符的情况下,作用相当于echo -n;但是当"\\c"后面仍然存在字符时,"\\c"后面的字符将不会被输出。

    • \\n:换行,被输出的字符从"\\n"处开始另起一行。

    • \\f:换行,但是换行后的新行的开头位置连接着上一行对应位置的行尾

    • \\v:与\\f相同

    • \\t:转义后表示插入tab,即横向制表符;

    • \\r:光标移至行首,但不换行,相当于使用"\\r"以后的字符覆盖"\\r"之前同等长度的字符;但是当"\\r"后面不存在任何字符时,"\\r"前面的字符不会被覆盖

    echo -e "abcdefg\\rhi" //结果是hicdefg

    • \\\\表示插入\\本身;

""的替换结构

  • i=`echo "11,22,33,44"`
    
    echo $i%,*
    11,22,33
    //从最后倒数到最短的匹配部分(用%指定",*")被删除
    
    echo $i%%,*
    11
    //从最后倒数到最长的匹配部分(用%%指定",*")都被删除
    
    echo $i#*,
    22,33,44
    //从开头到最短的匹配部分(用#指定"")后面的逗号的地方,被删除
    
    echo $i##*,
    44
    //从开头到最长的匹配部分(用#)后面的逗号的地方,被删除
    
    i=`echo "123456789"`
    
    echo $i:3
    456789
    //从变量i的下标为3的字符开始获取所有字符(下标从0开始)
    
    echo $i:3:3
    456
    //从变量i的下标为3的字符开始获取变量i的3个字符
    
    echo $i/3/c
    12c456789
    //字符串i的第一个匹配的3替换为c
    
    i=$(echo "123d56d89")
    echo $i/d/&
    12c456789
    //字符串i的所有匹配的d替换为&
    
    echo $#i
    10
    //获取i的长度
  1. $var:-string$var:=string

    若变量var为空,则用在命令行中用string来替换$var:-string,否则变量var不为空时,则用变量var的值来替换$var:-string;$var:=string的替换规则和$var:-string是一样的,所不同之处是$var:=string若var为空时,用string替换$var:=string的同时,把string赋给变量var: $var:=string很常用的一种用法是,判断某个变量是否赋值,没有的话则给它赋上一个默认值。

  2. $var:+string

    替换规则和上面的相反,即只有当var不是空的时候才替换成string,若var为空时则不替换或者说是替换成变量var的值,即空值。(因为变量var此时为空,所以这两种说法是等价的)

  3. var:?string

    替换规则为:若变量var不为空,则用变量var的值来替换$var:?string;若变量var为空,则把string输出到标准错误中,并从脚本中退出。我们可利用此特性来检查是否设置了变量的值。

以上是关于echo的使用和{}的替换结构的主要内容,如果未能解决你的问题,请参考以下文章

片段替换整个屏幕

替换从 VAST 代码返回的多个 HLS VOD 片段

替换或删除后台堆栈上现有片段的代码不起作用

使用 BottomNav 和 TabMenu 导航后的空白片段

试图替换片段,但它一直显示相同的片段

在活动中添加/替换后,片段的所有元素都为空