如何在bash的运行时中使用$创建变量值



我有一个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

首先,您需要消除拼写错误,CNTLCTNL。这个脚本执行您想要的

#!/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

最新更新