Shell參數展開
阿新 • • 發佈:2017-06-10
匹配 att 開關 align 展開 log 存在 variable 運算符和
參數展開(parameter expansion)是shell提供變量值在程序中使用的過程。
展開運算符 包括替換運算符和模式匹配運算符
替換運算符
運算符 | 替換說明 | 記憶 |
${varname:-word} | 若varname存在且非null,則返回其值;否則返回word。 | 空則返回word |
${varname:=word} | 若varname存在且非null,則返回其值;否則,設置varname的值為word,並返回其值。改變變量的值。 | 空則返回word,並改變變量值 |
${varname:?message} | 若varname存在且非null,則返回它的值;否則,顯示varname: message,並退出當前的命令或腳本。省略message會出現默認信息parameter null or not set。 | 空則顯示警告,並退出。 |
${varname:+word} | 若varname存在且非null,則返回word;否則,返回null。 | 非空返回word,空則返回null。 |
示例:
$ echo ${varname}
$ echo ${varname} $ echo ${varname:?warning1}
$ varname= $ echo ${varname}
$ echo ${varname:+var5}
|
模式匹配運算符
運算符 | 替換 | 記憶 |
${variable#pattern} | 如果模式匹配於變量值的開頭處,則刪除匹配的最短部分,並返回剩下的部分。 | 刪除開頭最短(一個#)部分 |
${variable##pattern} | 如果模式匹配於變量值的開關處,則刪除匹配的最長部分,並返回剩下的部分。 | 刪除開關最長(兩個#)部分 |
${variable%pattern} | 如果模式匹配於變量值的結尾處,則刪除匹配的最短部分,並返回剩下部分。 | 刪除結尾最短(一個%)部分 |
${variable%%pattern} | 如果模式匹配於變量值的結尾處,則刪除匹配的最長部分,並返回剩下部分。 | 刪除結尾最長(兩個%)部分 |
示例:
$ export myvar=/home/merlin/myfile.log.tail $ echo ${myvar} $ echo ${myvar#/*/} $ echo ${myvar##/*/} $ echo ${myvar%.*} $ echo ${myvar%%.*} |
Shell參數展開