shell 變量三 前綴搜索變量名並輸出結果

變量處理

從所有變量中搜索匹配的變量; 可以進一步求值; 比如我想輸出所有類似規則定義的變量名以及他們的值;

介紹

${!prefix*}
${!prefix@}

prefix是以xxx開始的, 不支持正則, 正則匹配可以通過其他方式獲取

  • *:將匹配的變量名通過$IFS記錄的字符串的第一個字符, 將所有的變量進行拼接;
  • @:則是上面的加個雙引號""即去掉\n;
# *
prefix_match_set=[]
for i in var_sets:
    if i.startswith(prefix):
        prefix_match_set.append(i)
result=IFS[0].join(prefix_match_set)
# @
result.replace("\n"," ")

案例

IFS=$'\n'
PASALADI="good morning"
cat <<EOF
${!PA*}
EOF
cat <<EOF
${!PA@}
EOF

# PASALADI
# PATH
# PASALADI PATH

指定IFS\n, 即按照\n拼接; *原樣輸出換行, @則是一行輸出;

輸出匹配

DEMO_ARG_VAR1=hello
DEMO_ARG_VAR2=world

for DEMO in ${!DEMO_ARG@}; do
    echo $(eval echo $'$'$(echo ${DEMO}))
    echo ${!DEMO}
done

# hello
# world
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章