大括号{}擴充是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