You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

zsh中如何通过插值字符串访问对应名称的环境变量?

解决zsh中间接引用环境变量的问题

你的脚本里$(STRIPE_$VAR)的写法是错误的——shell会把它识别为执行名为STRIPE_$VAR的命令,而非读取对应名称的环境变量值,这就是报错“command not found”的原因。

下面提供两种可行的解决方式:

方法一:使用zsh专属的参数扩展(推荐)

zsh支持${(P)}语法实现间接变量引用,安全且直观:

for VAR in "GB" "IE" "DE" "CA" "NY"
do
    echo "${(P)STRIPE_$VAR}"
done

${(P)}修饰符会将括号内的表达式结果当作变量名,自动解析出对应环境变量的值。

方法二:使用eval命令

如果需要兼容更多shell,可以用eval(注意:仅当变量内容可控时使用,避免注入风险):

for VAR in "GB" "IE" "DE" "CA" "NY"
do
    eval "echo \$STRIPE_$VAR"
done

eval会先解析字符串中的变量替换,将\$STRIPE_$VAR转换为$STRIPE_GB这类具体变量,再执行echo命令输出值。

内容的提问来源于stack exchange,提问作者Mark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 23:13:12