我想要使用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")
我所要做的就是从另一个环境变量中派生出一个环境变量,但它并不像那样简单。我认为它必须逃脱,无法在网上找到任何东西。
提前感谢您的帮助。
答案 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"