2011-08-09 121 views
0

我有一个场景,我需要执行下面的语句。如何嵌套变量内的变量?

air sandbox run $AI_PLAN/Sam_22.plan 

对于上述命令,AI应该从命令中获取。

> echo $PREFIX 
AI 

我尝试下面的方法

air sandbox run $`echo $PREFIX`_PLAN/Sam_22.plan 

返回错误:File not found

dollar_prefix=$`echo $PREFIX` 
air sandbox run ${dollar_prefix}_PLAN/Sam_22.plan 

返回错误:File not found

请让我知道我在哪里在上面脚麻编码。

回答

1

你将需要eval东西:

PREFIX=AI 
AI_PLAN=some_directory 
eval directory=\$${PREFIX}_PLAN 
air sandbox run $directory/Sam_22.plan 
+0

谢谢glenn它的工作。 – user840963

0

尝试使用命令替换:

$(command ...)_PLAN 

让我们假设程序make_prefix在您的路径。然后:

> make_prefix 
AI 
> echo $(make_prefix) 
AI 
> echo $(make_prefix)_PLAN 
AI_PLAN 
+0

嗨福Bah,我不明白你能不能详细说说。 – user840963

+0

嗨Foo,这没有解决它给错误信息。谢谢。 – user840963

0

它不清楚你真正想要什么有发生,但我可以猜测,你可能想在你的情况类似

air sandbox ${${PREFIX}_PLAN}/Sam_22.plan 

这将需要变量PREFIX的值(AI ?),并附加_PLAN,并使用它作为一个变量的名字来获取

+0

嗨克里斯,谢谢回答我收到以下错误>回声$ {PREFIX} AI >回声$ {PREFIX} _PLAN AI_PLAN >回声$ {$ {PREFIX}} _PLAN -ksh:语法错误: '!意外 – user840963