大括號{}的特殊應用

大括號{}擴展是shell 是常用的方法之一,如下:

mkdir -p /data{a,b,c}/{d,e,f}   #同時建立多目錄

echo{1..100}              #打印數字序列

cp file{,.bak}             #快速備份文件

${var:-word}              #var 存在且非空,返回其值,否則返回word

${var:+word}              #var存在且非空,返回word,否則返回null

${var:?message}            #var存在且非空,返回其值,否則var:message

${var:=word}              #var存在且非空,返回其值,否則設置爲word

實例:判斷參數是否存在

#!/bin/bash

 var=$1

 echo {var:?null}


下面介紹一些特殊的應用:

這裏的大括號主要有2個應用,字符串的截取和替換


一、截取:

  1. # 、## 和 %、%% 的使用 

    舉例:

    a=www.tongbu.com

    echo ${a#*.}  # 一個# 代表從左數,刪除第一個 . 前的所有字符

    結果:   tongbu.com

    

  echo ${a##*.} #  2個##代表從左野蠻刪除,直到最後一個  .  前的左右字符

  結果:com

  

  % && %%  從右開始刪除

  a=www.tongbu.com

  echo ${a%.*}   #  一個%代表從右數,刪除第一個 . 後的所有字符

  結果:www.tongbu

  

  echo ${a%%.*}  # 2個%%從右數,野蠻刪除最後一個 . 後的所有字符

  結果:www

  

 2.通過數字佔位符截取: 注意從0開始

  a=www.tongbu.com

  echo ${a:0:5}  # 從零開始,截取5個字符

  結果: www.t

  

  echo ${a:2:5}  #  從第二個字符開始,截取5個字符

  結果: ww.to

  

  3.  替換:

  a=www.tongbu.com

  echo {a/w/h}   # 將第一個w 替換成h

  結果:hww.tongbu.com

  

  echo {a//w/h}  #將所有的w替換成h   /w 代表所有

  結果:hhh.tongbu.com

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章