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}))
done

# hello
# world
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值