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

时间:2016-05-05 10:03:44

标签: linux bash unix

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

4 个答案:

答案 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