变量处理
从所有变量中搜索匹配的变量; 可以进一步求值; 比如我想输出所有类似规则定义的变量名以及他们的值;
介绍
${!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}))
done
# hello
# world
博客围绕Linux变量处理展开,介绍了从所有变量中搜索匹配变量并求值的方法。提到prefix以特定字符开始且不支持正则,还说明了不同拼接方式,如按记录字符串首字符拼接等,最后给出指定拼接规则原样输出或一行输出的案例。
84

被折叠的 条评论
为什么被折叠?



