1. 程式人生 > 其它 >特殊shell擴充套件變數

特殊shell擴充套件變數

  • 這四個擴充套件變數(+,-,=,?),都屬於對變數的值進行判斷、處理
如果parameter變數值為空,返回word字串,賦值給result變數

result=${parameter:-word}

如果parameter變數值為空,則word替代變數值,且返回其值
result=${parameter:=word}

如果para變數為空,word當做stderr輸出,否者輸出變數值
用於設定變數為空導致錯誤時,返回的錯誤資訊
${para:?word}

如果para變數為空,什麼都不做,否則word返回給接受者
${para:+word}
  • 實際案例
[root@localhost cahnge_more_file]# res=${name1:-madaha}
[root@localhost cahnge_more_file]# echo $res
madaha

[root@localhost cahnge_more_file]# unset name1
[root@localhost cahnge_more_file]# echo $name1

[root@localhost cahnge_more_file]# res=${name1:=madaha}
[root@localhost cahnge_more_file]# echo $res
madaha
[root@localhost cahnge_more_file]# echo $name1
madaha

[root@localhost cahnge_more_file]# unset name1
[root@localhost cahnge_more_file]# ${name1:?}
-bash: name1: 引數為空或未設定
[root@localhost cahnge_more_file]# ${name1:?未設定引數啊啊啊啊啊}
-bash: name1: 未設定引數啊啊啊啊啊

[root@localhost cahnge_more_file]# unset res
[root@localhost cahnge_more_file]# echo $res

[root@localhost cahnge_more_file]# res=${name:+madaha}
[root@localhost cahnge_more_file]# echo $res
madaha

# 刪除指定目錄下面某個時間一下的檔案
path=/data/mysql/logs
find ${path:=/data/mysql/logs} -name *.tar.gz* -type f -mtime +7 |  xargs rm -f