變數替換與擴充

來源:互聯網
上載者:User

 

一、變數替換${varname:-word}    如果變數varname存在且非null,則返回其值,否則,返回word
${varname-word}     如果變數varname存在,則返回其值,否則,返回word

$ var=
$ echo ${var:-"hello"}
hello
$ echo ${var-"hello"}

$ unset var
$ echo ${var-"hello"}
hello
$


${varname:+word}    如果變數varname存在且非null,則返回word,否則,返回null

${varname:=word}   如果變數varname存在且非null,則返回其值,否則,設定它為word,並返回word



$ var=
$ echo ${var:="hello"}
hello

$ echo ${var}

hello

$ var=

$ echo ${var="hello"}

$
echo ${var}


$

${varname:?word}   如果變數varname存在且非null,則返回其值,否則,顯示varname:word,並退出當前的命令或指令碼,省略word會出現預設的資訊parameter null or not set。
${varname?word}     如果變數varname存在,則返回其值,否則,顯示varname:word,並退出當前的命令或指令碼,省略word會出現預設的資訊parameter null or not set。


$ var=
$ echo ${var:?"hello"}
bash: var: hello
$ echo ${var?"hello"}

$ unset var
$ echo ${var?"hello"}
bash: var: hello
$

二、模式比對運算(注意:這裡用的模式都是通配字元模式,而非Regex)假設變數 path=/home/tolstoy/mem/long.file.name
${variable#pattern}      如果模式比對於變數的開頭處,則刪除匹配的最短部分,並且返回剩下的部分
例如:${path#/*/}        結果: tolstoy/mem/long.file.name${variable##parttern}  如果模式比對於變數的開頭處,則刪除匹配的最長部分,並且返回剩下的部分
例如:${path##/*/}        結果: long.file.name
${variable%parttern}    如果模式比對於變數的結尾處,則刪除匹配的最短部分,並且返回剩下的部分例如:${path%.*}           結果: /home/tolstoy/mem/long.file${variable%%parttern} 如果模式比對於變數的結尾處,則刪除匹配的最長部分,並且返回剩下的部分例如:${path%%.*}        結果: /home/tolstoy/mem/long
${varname=word}     如果變數varname存在,則返回其值,否則,設定它為word,並返回word
${varname+word}     如果變數varname存在,則返回word,否則,返回null


$ var=
$ echo ${var:+"hello"}

$ echo ${var+"hello"}
hello
$ unset var
$ echo ${var+"hello"}

$


三、特殊情況

${#var}  表示字符串長度

$#  ${#*} ${#@} 表示位置參數的個

對於數組來說,${#array_name} 表示的是數組中第一個元素的長度

對於數組來說,${#array_name[*]}和${#array_name[@]}表示數組中元素的個數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.