Bash
回顯以“nlu_setting”開頭的所有環境變數的名稱和值
我正在尋找一種方法來回顯以 nlu_setting 開頭的所有 env 變數的名稱和值,因此輸出可能如下所示:
nlu_setting_json=true nlu_setting_global=0 nlu_setting_bar=foo
有誰知道如何做到這一點?
for var in "${!nlu_setting_@}"; do printf '%s=%s\n' "$var" "${!var}" done
擴展
${!nlu_setting_@}
是一個bash
特定的擴展,它返回與特定前綴匹配的變數名列表。在這裡,我們使用它來詢問所有以 string 開頭的名稱nlu_setting_
。我們遍歷這些名稱並輸出名稱以及該變數的值。我們使用變數間接(
${!var}
)獲得變數的值。
看了這個問題的答案後,我想出了這個:
compgen -A variable nlu_setting_ | while read v; do echo "$v = ${!v}"; done
它似乎工作。從來沒有聽說過 compgen 命令,但如果它是內置的通用 bash,它應該一切都好..