1

Я всегда думал о обратных галочках в bash как о «выполнении вывода команды 'some_command' . Что происходит в следующем ... рассмотрим скрипт myscript.pl который печатает следующий текст:

   export PS1="[STRING] $PS1"

Если я скопирую вывод из cat file.txt в командную строку и выполню , «[STRING]» будет добавлено в начало моей подсказки.

С другой стороны, обратный 'myscript.pl' подсказку "[STRING] . Что происходит?

1 ответ1

3

bash не выполняет вывод команды backtick, а только подставляет ее. (Функция называется подстановкой команд в конце концов.)

Если подстановка не заключена в двойные кавычки, для вывода команды выполняется разделение слов , но кавычки и другие специальные символы игнорируются; export PS1="[STRING] $PS1" просто делится на $IFS для:

  • export
  • PS1="[STRING
  • $PS1"

Если вы хотите выполнить содержимое файла, поставьте его:

. ./file.txt

или не POSIX:

source ./file.txt

Если вы хотите, чтобы весь стандартный синтаксический анализ применялся к подстановке - например, к переменной - вы можете использовать eval "$commands" или eval "$(foo)" или eval "`foo`". Но будь очень осторожен с этим.

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