星期一, 5月 02, 2011

變數-筆記


1.變數內容的刪除
# (從變數的前端開始將符合的字串刪除(刪除最短的)
## (從變數的前端開始將符合的字串刪除(刪除最長的)
%(從變數的後端開始將符合的字串刪除(刪除最短的)
%%(從變數的後端開始將符合的字串刪除(刪除最長的)

ex.
MAIL=/var/spool/mail/sixchen
去掉檔名,保留目錄名稱
echo ${MAIL%/*}
/var/spool/mail

去掉目錄,只留檔名
echo ${MAIL##/*/}
sixchen

2.變數內容的取代
/a/b  #a替換成b(只取代符合的第一個字串)
//a/b #a替換成b(取代所有符合字串)

ex.
path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

將sbin替換成SBIN(只取代找到的第一個)
echo ${path/sbin/SBIN}
path=/usr/local/SBIN:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

將sbin替換成SBIN(取代找到的每一個)
path=/usr/local/SBIN:/usr/local/bin:/usr/SBIN:/usr/bin:/SBIN:/bin:/usr/games

3.測試變數是否存在,若不存在則替換成所要的變數
ex.
unset username
username=${username-1234567}
echo $username
1234567

若此變數存在(含空字元),則不替換
username=${username-123}
echo $username
1234567

若使變數不存在或是存在但為空字元,都可替換
username=""
username=${username-root}
echo $username
          #還是空字元 

username=${username:-root}
echo $username
root   #替換了空字元

username=$username:-123}
echo $username
root  #非空字元無法替換