bash获取后台进程ID赋予父pid

问题描述 投票:0回答:1

使用此命令创建bash脚本:

cat <<"END"> z
#! /bin/bash

sleep 20 && exit 1 &
ret=$!

ps $ret | grep $ret
END

然后运行它得到:

7230 pts/39   S+     0:00 /bin/bash ./z

我期望看到sleep 20 ...这是子进程。如果删除&& exit 1,它将返回子进程。

是什么原因?我如何在上面的语句中获取子进程ID?

bash pid
1个回答
0
投票
sleep 20 && exit 1 &

先执行sleep 20s,然后执行exit 1 &

您真正想要的是:

(sleep 20 && exit 1) &

这会产生一个在后台执行两个命令的子shell。

© www.soinside.com 2019 - 2024. All rights reserved.