我有一个bash,如下所示,我想在echo中使用YYY-XXXX_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-XXXX_SK_REGISTER_template.ctl
如果您不介意更改TRADE_TYPE
或使用临时变量,那么您可以使用${!var}
扩展:
TRADE_TYPE="hello"
hello_world=1234
TRADE_TYPE="${TRADE_TYPE}_world"
echo ${!TRADE_TYPE}
# will print 1234
首先,您需要消除拼写错误,CNTL与CTNL。这个脚本执行您想要的
#!/bin/bash
TRADE_TYPE=$1
YYY_XXX_SK_REGISTER_CNTL=YYY_XXX_SK_REGISTER_template.ctl
eval echo "$${TRADE_TYPE}_CNTL"
可能有比诉诸eval更好的解决方案。但是你必须解释一下你的总体目标是什么
我想您期待的是以下代码:
#!/bin/bash
TRADE_TYPE=$1
export TRADE_TYPE
variable="$TRADE_TYPE"_template.ctl
echo $variable
使用间接变量引用:
#! /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