Bash

回顯以“nlu_setting”開頭的所有環境變數的名稱和值

  • November 12, 2020

我正在尋找一種方法來回顯以 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,它應該一切都好..

引用自:https://unix.stackexchange.com/questions/460462