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

如何在Bash中通过参数拼接环境变量名获取Slack令牌

问题描述

我有一个环境变量:

slack_auth_token_test="x0xb-xxxxx-xxxx"

我的脚本执行命令为:

./script.sh test

脚本内容如下:

slack_channel=${1}
echo "token for slack channel is"
echo "${slack_auth_token_[$slack_channel]}"

我传入频道名test作为参数,希望将该频道名追加到环境变量名后,从而获取对应的令牌。

解决方法

你当前的写法${slack_auth_token_[$slack_channel]}无法实现动态拼接环境变量名并取值的需求,Bash中有两种可靠方式可以达成目标:

方法1:使用Bash间接扩展语法(推荐)

通过拼接出完整的环境变量名,再用${!变量名}的语法间接获取对应值:

slack_channel=${1}
# 拼接得到完整的环境变量名称
token_var="slack_auth_token_${slack_channel}"
echo "token for slack channel is"
# 间接扩展获取变量值
echo "${!token_var}"

方法2:使用eval命令(需注意安全风险)

如果能确保传入的参数是可信的,也可以用eval实现动态取值:

slack_channel=${1}
echo "token for slack channel is"
eval "echo \${slack_auth_token_${slack_channel}}"

注意:eval会解析并执行传入的任意命令,若参数来源不可信,可能引发安全问题,因此优先推荐第一种方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 08:02:04