$$
给出脚本进程的进程ID在脚本中使用时,是这样的:
实施例1
#!/bin/bash
# processid.sh
# print process ids
ps -o cmd,pid,ppid
echo "The value of \$\$ is $$"
$ ./processid.sh
CMD PID PPID
bash 15073 4657
/bin/bash ./processid.sh 15326 15073
ps -o cmd,pid,ppid 15327 15326
The value of $$ is 15326
通过观察给定PID $$
和ps
是15326
我的shell提示符是PID 15073
但是,在一个子shell, $$
给父shell的PID(即15073)
实施例2
$ ( ps -o cmd,pid,ppid ; echo $$ )
CMD PID PPID
bash 15073 4657
bash 15340 15073
ps -o cmd,pid,ppid 15341 15340
15073
这里壳层是PID 15340
问:为什么会这样? 是不是剧本也处于子shell运行? 什么是例2中的子shell,并在其中的脚本示例1中运行shell之间的区别?