前言
- 在「節錄翻譯:All about {Curly Braces} in Bash (Bash 裡所有關於大括號的事)」一文中有提到三種方式:
- 本篇補充其他該篇沒提到、關於大括號的小技巧
Bash 大括號其他小技巧
指定變數預設值
對於某變數要指定預設值,可以在大括號內用 :-
的方式表示,例如
|
|
上面表示:
- 變數
COLOR
會指派成INPUT_COLOR
的值 - 但如果
INPUT_COLOR
此變數不存在的時候,他會給定預設值#0000FF
可以比較一下以下結果
|
|
動態變數 (Dynamic variable)、間接變數 indirect variables
- 有的時候會需要一個指向變數的變數,來完成一些方便的設定、或是簡化的
dict
(Hashmap
)。 - 例如以下例子
|
|
希望在不更動 ref
的情況下,藉由修改 ref
指向的變數,來得到最後的值。
此時需要用 !
協助,寫成 ${!<YOUR_VAR>}
的形式,如下:
|
|
字串切除符合項目
把字串依照給定的文字,如果符合就從前面分割、或是從後面分割:
|
|
舉例來說
SITE_NAME="ktlast.com"
|
|
如果寫反、就代表比對失敗,也就沒有效果:
|
|
REF
- https://stackoverflow.com/questions/14152534/variable-expansion-in-curly-braces
- https://stackoverflow.com/questions/16553089/dynamic-variable-names-in-bash
- http://mywiki.wooledge.org/BashFAQ/006#Indirection
- https://unix.stackexchange.com/questions/683418/bash-to-read-file-and-get-keyvalue-pair-split-by-spaces