變量處理
從所有變量中搜索匹配的變量; 可以進一步求值; 比如我想輸出所有類似規則定義的變量名以及他們的值;
介紹
${!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