Страницы

Поиск по вопросам

вторник, 23 октября 2018 г.

Для чего используется символ ` (обратная кавычка, backquote, backtick)?

Для чего используют символы `?
Например:
python3.4 `which ptpython`


Ответ

это несколько устаревшая форма записи для вызова вложенной оболочки.
уже в posix version 2 (1997) присутствует и более удобная (и рекомендуемая стандартом posix) форма записи: $(command)
удобство можно увидеть наглядно при вложении нескольких вызовов один внутрь другого:
$ echo `echo \`echo \\\`echo 1\\\` 2\` 3` 4 1 2 3 4 $ echo $(echo $(echo $(echo 1) 2) 3) 4 1 2 3 4

смысл использования: во время интерпретации команды оболочка, встретив конструкцию $(command) (или `command`), запускает новый процесс оболочки, в котором выполняется указанная команда, а всё, что возвратит команда в stdout, будет подставлено вместо этой конструкции (то, что команда возвратит в stderr, добавится к stderr основного процесса оболочки).

Например: python3.4 `which ptpython`
в данном случае сначала будет выполнена команда which ptpython, которая вёрнет (в stdout) полный путь к программе ptpython. если, конечно, такая программа присутствует в вашей системе в каком-либо из каталогов, упомянутых в переменной окружения $PATH. если отсутствует — будет возвращена пустая строка.
затем результат (полный путь либо пустая строка) будет передана программе python3.4 в качестве первого аргумента. если, конечно, такая программа присутствует в вашей системе в каком-либо из каталогов, упомянутых в переменной окружения $PATH. если отсутствует — вы получите сообщение об ошибке: command not found

посмотреть текущее значение переменной окружения, например, $PATH, можно так:
$ echo $PATH

Комментариев нет:

Отправить комментарий