У меня есть сценарий в названном Bash Script.sh
, и это должно знать свой собственный PID (т.е. Я должен получить PID в Script.sh),
Какая-либо идея, как сделать это?
используйте $ BASHPID
или $$
См. руководство для получения дополнительной информации, включая различия между ними.
TL; DRTFM
$$
Расширяется до идентификатора процесса оболочки.
()
расширяется к идентификатору процесса вызывающей оболочки, а не подоболочке. $ BASHPID
заменяется на идентификатор текущего процесса Bash.
()
он заменяется на идентификатор процесса подоболочки В дополнение к примеру, приведенному в Advanced Bash Scripting Guide, на который ссылается Jefromi, эти примеры показывают, как pipes создают подпапки:
$ echo $$ $BASHPID | cat -
11656 31528
$ echo $$ $BASHPID
11656 11656
$ echo $$ | while read line; do echo $line $$ $BASHPID; done
11656 11656 31497
$ while read line; do echo $line $$ $BASHPID; done <<< $$
11656 11656 11656
PID хранится в $$
.
Пример: kill -9 $$
уничтожит экземпляр оболочки, из которой он вызывается.