2

Я пытаюсь загрузить несколько переменных из файла (не .bash_*), который имеет аналогичные:

export MY_VAR='foo'

Команда, которую я использовал, чтобы "источник" это было

`tail -1 myFile`

Это работает, но я echo $MY_VAR , я получаю

'foo'

Но если я на самом деле запускаю export MY_VAR='foo' в терминале, а затем выводит echo $MY_VAR :

foo

Почему несоответствие в кавычках и как это исправить?

1 ответ1

3

Использование обратных галочек - это то, что называется заменой команд. Оболочка заменяет его после разбора токенов на выходе. Поскольку он встречал кавычки в выводе, он избегал их. Таким образом, он будет выполнять:

export MY_VAR=\'foo\'

оставляя переменную в кавычках.

Вместо этого вы можете использовать замену процесса и продолжать использовать команду source :

source <(tail -1 myFile)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .