天天看點

大括号{}的特殊應用

大括号{}擴充是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個應用,字元串的截取和替換

一、截取:

# 、## 和 %、%% 的使用 

舉例:

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開始

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

  結果: www.t

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

  結果: ww.to

  3.  替換:

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

  結果:hww.tongbu.com

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

  結果:hhh.tongbu.com

繼續閱讀