在bash / shell中打印网址时的未绑定变量

时间:2015-03-16 21:58:09

标签: linux bash shell openstack

我想要使用2个变量来派生第3个变量:

export REGION_NAME=phx

export phx_url=https://www.google.com

我正在尝试执行以下操作:

echo "$((${REGION_NAME}_url))"

我收到以下错误:

-sh: https://www.google.com: syntax error in expression (error token is "://www.google.com")

我所要做的就是从另一个环境变量中派生出一个环境变量,但它并不像那样简单。我认为它必须逃脱,无法在网上找到任何东西。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

$((...))是算术扩展。你并不是那个意思。尝试正常的变量扩展(使用间接)。

REGION_NAME=phx

phx_url=https://www.google.com

R_VAR=${REGION_NAME}_url    

echo "${!R_VAR}"

答案 1 :(得分:2)

一种可能的解决方案是使用eval,如:

var="phx"
eval "${var}_url='some'"
echo $phx_url   #prints "some"

但是,我不推荐这个(因为eval可能非常危险)。

而不是使用associative arrays(也就是哈希变量),例如:

declare -A urls

var="phx"
urls[$var]="some2"
echo "${urls[phx]}" #prints "some2"