Как вложить переменную в переменную? - PullRequest
0 голосов
/ 10 августа 2011

У меня есть сценарий, в котором мне нужно выполнить приведенный ниже оператор.

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

Пожалуйста, дайте мне знать, где я ошибаюсь в приведенной выше кодировке.

Ответы [ 3 ]

1 голос
/ 10 августа 2011

Вам понадобится eval что-то:

PREFIX=AI
AI_PLAN=some_directory
eval directory=\$${PREFIX}_PLAN
air sandbox run $directory/Sam_22.plan
0 голосов
/ 10 августа 2011

Непонятно, что вы на самом деле хотите, чтобы произошло, но я могу предположить, что вы, вероятно, хотите что-то вроде

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

Это примет значение переменной PREFIX (AI в вашем случае?)и добавьте _PLAN и используйте ТО в качестве имени переменной для извлечения

0 голосов
/ 10 августа 2011

попробуйте использовать подстановку команд:

$(command ...)_PLAN

Предположим, программа make_prefix находится на вашем пути. Тогда:

> make_prefix
AI
> echo $(make_prefix)
AI
> echo $(make_prefix)_PLAN
AI_PLAN
...