大括號{}擴展是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個應用,字符串的截取和替換
一、截取:
# 、## 和 %、%% 的使用
舉例:
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