Perlu dicatat bahwa $BASHPIDini baru untuk BASH 4. Jika Anda menggunakan BASH 3.x, Anda harus menggunakan$$
Bruno Bronosky
Jawaban:
19
Contoh diberikan dalam BASHPIDdeskripsi bash manpage:
BASHPID
Expands to the process id of the current bash process.This
differs from $$ under certain circumstances, such as subshells
that do not require bash to be re-initialized.
Berikut ini adalah contoh dari subkulit yang mengeluarkan konten variabel, bersama dengan $$dan isi di BASHPIDluar subkulit.
$ echo $(echo $BASHPID $$) $$ $BASHPID
25680169201692016920# | | | |# | | | -- $BASHPID outside of the subshell# | | -- $$ outside of the subshell# | -- $$ inside of the subshell# -- $BASHPID inside of the subshell
Subkulit. $$ditentukan oleh POSIX dan selalu menjadi nilai dari proses shell asli. $BASHPIDadalah variabel spesifik-Bash, dan selalu merupakan nilai proses dari mana variabel didereferensi, menghitung subkulit.
$ f(){ printf '%s: %d, %d\n'"$1" $$ $BASHPID;};
$ ${BASH_VERSION+shopt -s lastpipe};set+m;
$ f 1>&2| f 22:31490,314901:31490,32545
Saya berhasil meyakinkan pengelola mksh untuk menambahkan BASHPIDke versi terbaru, jadi ini agak portable. Dimungkinkan juga untuk mengimplementasikan BASHPIDdi ksh93 sendiri di banyak platform.
$BASHPID
ini baru untuk BASH 4. Jika Anda menggunakan BASH 3.x, Anda harus menggunakan$$
Jawaban:
Contoh diberikan dalam
BASHPID
deskripsi bash manpage:Berikut ini adalah contoh dari subkulit yang mengeluarkan konten variabel, bersama dengan
$$
dan isi diBASHPID
luar subkulit.sumber
Subkulit.
$$
ditentukan oleh POSIX dan selalu menjadi nilai dari proses shell asli.$BASHPID
adalah variabel spesifik-Bash, dan selalu merupakan nilai proses dari mana variabel didereferensi, menghitung subkulit.Saya berhasil meyakinkan pengelola mksh untuk menambahkan
BASHPID
ke versi terbaru, jadi ini agak portable. Dimungkinkan juga untuk mengimplementasikanBASHPID
di ksh93 sendiri di banyak platform.sumber