我知道在bash中我们可以使用圆括号(
和)
创建子shell。根据bash的说明文档:
(list) list is executed in a subshell environment
获取当前进程 ID的方法如下:
echo $$
现在我的问题是如何获取使用命令行中的 (
和 )
创建的子shell的进程ID?
如果我使用这个:
echo $$; ( echo $$; )
由于$$
在子shell创建之前就已被扩展,因此我将在stdout上打印父Shell的进程ID两次。那么如何真正强制延迟扩展?
[解决方案应该适用于Mac,而不仅仅是Linux]
更新:
建议的链接答案不起作用,因为echo $BASHPID
在我的Mac上无法工作并返回空白。