На этот вопрос уже есть ответ здесь:
Как следует из названия, мне интересно, в чем весь смысл echo $$
... Я понимаю, что команда echo $?
возвращает статус последней команды это было запущено, и теперь я не понимаю, что возвращает echo $$
... Я считаю, что он запускает что-то, связанное с PID
, я в чем-то прав или полностью ошибаюсь?
Из определения стандарта POSIX:
$
Расширяется до десятичного идентификатора процесса вызванной оболочки. В подоболочке (см. Среду выполнения Shell), '$' должен расшириться до того же значения как значение текущей оболочки.
Это необходимо, когда Вы могли бы отправить сигналы, те, которые УНИЧТОЖАЮТ или SiGTERM к оболочкам кроме, Вы в настоящее время используете, определяя информацию о процессе об оболочке через доступные данные в /proc/$$/
каталог и много других вещей. Я неопределенно вспоминаю использование его однажды в сценарии оболочки получать PID сценария и затем отличать его от вызовов функции, определенных в рамках сценария. Это может также использоваться для различения нескольких экземпляров сценария того же имени.