2015-07-27 4 views
0

У меня есть .sh скрипт, который использует переменные окружения, которые я экспортировал ранее. Я бы хотел, чтобы мои переменные были такими: VAR1="${libDir}/test", так что в моем скрипте ${libDir} будет заменен некоторым значением. Я объявил свой экспорт, как показано ниже: export VAR1="${libDir}/test", но в моем скрипте libDir совсем не учитывается. Могу ли я это сделать так?Могу ли я экспортировать переменную с другой переменной внутри?

+0

вы подставляя свою ценность в текущей среде. но я должен сообщить вам, что то, что вы пытаетесь сделать, крайне запутанно и опасно. вы пытаетесь сделать даже переменную динамически ограниченной! если ваши скрипты вырастут до 5 файлов. вы будете единственным, кто будет поддерживать его, поскольку никто другой не может и не хочет поддерживать этот беспорядок! – HuStmpHrrr

ответ

1

Нет, вы не можете иметь переменную, которая содержит ссылку на переменную, которая получает замещенный в моде «замедленной»:

$ libDir=foo 
$ VAR1="${libDir}/test" 
$ libDir=bar 
$ echo "$VAR1" 
foo/test 

Вы могли обойти эту проблему с помощью eval, но вы не должны ,

Однако функция будет делать именно то, что вы хотите, с ценой сенсорного дополнительного синтаксиса:

$ var1() { 
    echo "${libDir}/test" 
} 
$ libDir=foo 
$ echo "$(var1)" 
foo/test 
$ libDir=bar 
$ echo "$(var1)" 
bar/test 
Смежные вопросы