文章目录

  • echo和{}的替换结构
  • echo的使用技巧
  • "{}"的替换结构

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来替换echo 追加换行 echo替换_bash{var:-string};echo 追加换行 echo替换_bash_02{var:-string}是一样的,所不同之处是echo 追加换行 echo替换_正则表达式_03{var:=string}的同时,把string赋给变量var: ${var:=string}很常用的一种用法是,判断某个变量是否赋值,没有的话则给它赋上一个默认值。
  2. ${var:+string}替换规则和上面的相反,即只有当var不是空的时候才替换成string,若var为空时则不替换或者说是替换成变量var的值,即空值。(因为变量var此时为空,所以这两种说法是等价的)
  3. {var:?string}替换规则为:若变量var不为空,则用变量var的值来替换${var:?string};若变量var为空,则把string输出到标准错误中,并从脚本中退出。我们可利用此特性来检查是否设置了变量的值。

补充扩展:在上面这五种替换结构中string不一定是常值的,可用另外一个变量的值或是一种命令的输出。