Я начинаю начинать с 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 через несколько дней, но
всякий раз, когда я запускаю этот script $BASHPID
, ничего не возвращает, я просто получаю новую строку. Это потому, что я запускаю это на mac и $BASHPID
не работает на mac?