$BASHPID И $$ отличаются в некоторых случаях

Вы могли использовать V для выделения строки, Вы хотите заменить в Визуальном Режиме и затем совершить нападки pp вставлять по той строке.

Это только добавляет одно нажатие клавиши, таким образом, оно походит на довольно хорошее решение.

8
24.01.2013, 00:06
2 ответа

Пример обеспечивается в BASHPID описание страницы справочника удара:

   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.

Вот пример подоболочки, производящей содержание переменной, наряду с $$ и содержание BASHPID за пределами подоболочки.

$ echo $(echo $BASHPID $$)      $$       $BASHPID
              25680    16920    16920    16920
#             |        |        |        |
#             |        |        |        -- $BASHPID outside of the subshell
#             |        |        -- $$ outside of the subshell
#             |        -- $$ inside of the subshell
#             -- $BASHPID inside of the subshell
17
27.01.2020, 20:08

Подоболочки. $$ указан POSIX и всегда остается значением исходного процесса оболочки. $BASHPID определенная для Bash переменная и всегда значение процесса, от которого переменная разыменовывается, считая подоболочки.

 $ f() { printf '%s: %d, %d\n' "$1" $$ $BASHPID; };
 $ ${BASH_VERSION+shopt -s lastpipe}; set +m;
 $ f 1 >&2 | f 2
2: 31490, 31490
1: 31490, 32545

Мне действительно удавалось убедить mksh специалиста по обслуживанию добавлять BASHPID к новой версии, таким образом, это несколько портативно. Также возможно реализовать BASHPID в ksh93 самостоятельно на многих платформах.

13
27.01.2020, 20:08

Теги

Похожие вопросы