【发布时间】:2011-12-13 01:53:02
【问题描述】:
我是 bash 脚本初学者,我有一个“家庭作业”要做。我想出了大部分内容,但有一部分说我必须回显父 bash 的 pid 和我将运行的两个子 shell 的 pid。于是上网查了一下,找到了这个(The Linux documentation project):
#!/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) 第一个回显打印什么?这是父 bash 的 pid 吗?
2) 为什么第二个回显打印出 0?
3) $BASH_SUBSHELL 是命令还是变量?
4) 我在 mac 上做所有事情,过几天我会在 Linux 机器上尝试所有这些,但是
每当我运行此脚本$BASHPID 时不会返回任何内容,我只会换行。这是因为我在 Mac 上运行它而 $BASHPID 在 Mac 上不起作用?
【问题讨论】: