Для чего используют символы `?
Например:
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
Комментариев нет:
Отправить комментарий