Разница между bash pid и $$

Я новичок в написании сценариев bash, и у меня есть " домашнее задание "делать. Я понял большую часть вещей, но есть часть, в которой говорится, что я должен повторить pid родительского bash и pid двух подоболочек, которые я буду запускать. Итак, я поискал в Интернете и нашел это (проект документации Linux) :

#!/bin/bash4

echo "\$\$ outside of subshell = $$"                              # 9602
echo "\$BASH_SUBSHELL  outside of subshell = $BASH_SUBSHELL"      # 0
echo "\$BASHPID outside of subshell = $BASHPID"                   # 9602

echo

( echo "\$\$ inside of subshell = $$"                             # 9602
  echo "\$BASH_SUBSHELL inside of subshell = $BASH_SUBSHELL"      # 1
  echo "\$BASHPID inside of subshell = $BASHPID" )                # 9603
  # Note that $$ returns PID of parent process.

Итак, вот мои вопросы:

1) Что выводит первое эхо-сообщение? Это pid родительского bash?

2) Почему второе эхо выводит 0?

3) $ BASH_SUBSHELL - это команда или переменная?

4) Я все делаю на Mac , Я попробую все это на машине Linux через несколько дней, но всякий раз, когда я запускаю этот сценарий $ BASHPID , ничего не возвращает, я просто получаю новую строку. Это потому, что я запускаю это на Mac, а $ BASHPID не работает на Mac?

20
задан Dmitry Grigoryev 30 June 2015 в 12:36
поделиться