我有一个bash,如下所示,我想在回声中使用YYY_XXX_SK_REGISTER_CNTL的值。
#! /bin/bash
TRADE_TYPE=$1
YYY_XXX_SK_REGISTER_CNTL=YYY_XXX_SK_REGISTER_template.ctl
echo $TRADE_TYPE"_CTNL"
按以下方式调用基地:
./test.sh YYY_XXX_SK_REGISTER
期望回显的结果:YYY_XXX_SK_REGISTER_template.ctl
答案 0 :(得分:2)
如果您不介意更改TRADE_TYPE
或使用临时变量,那么您可以使用${!var}
扩展:
TRADE_TYPE="hello"
hello_world=1234
TRADE_TYPE="${TRADE_TYPE}_world"
echo ${!TRADE_TYPE}
# will print 1234
答案 1 :(得分:1)
首先,你需要摆脱错误, CNTL vs CTNL 。 这个脚本做你想要的
#!/bin/bash
TRADE_TYPE=$1
YYY_XXX_SK_REGISTER_CNTL=YYY_XXX_SK_REGISTER_template.ctl
eval echo "\$${TRADE_TYPE}_CNTL"
可能有一个比使用 eval 更好的解决方案。但是你必须解释你的总体目标是什么。
答案 2 :(得分:0)
我认为您期待的代码如下:
#!/bin/bash
TRADE_TYPE=$1
export TRADE_TYPE
variable="$TRADE_TYPE"_template.ctl
echo $variable
答案 3 :(得分:0)
使用间接变量引用:
#! /bin/bash
TRADE_TYPE="${1}_CNTL"
YYY_XXX_SK_REGISTER_CNTL=YYY_XXX_SK_REGISTER_template.ctl
echo "${!TRADE_TYPE}"
在命令行输入以下内容时:
./test.sh YYY_XXX_SK_REGISTER
您的结果将是:
YYY_XXX_SK_REGISTER_template.ctl