【发布时间】:2013-05-01 00:54:54
【问题描述】:
我有一个有趣的情况。这里的所有代码都是我所面临的确切问题的功能性伪代码示例,所以不要开玩笑分配date 的输出。我实际上想捕获一个更慢、更依赖资源的函数的输出,但date 可以很好地显示我遇到的功能障碍。
我正在编写 bash 脚本,我想将进程的输出分配给一个变量,如下所示:
RESPONSE=$(nice -n 19 date);
现在这给了我一个很好的变量RESPONSE,对吧?好的,如果我想获取在$() 中调用的函数的进程ID 怎么办?我该怎么做?我认为这会起作用:
RESPONSE=$(nice -n 19 date & PID=(`jobs -l | awk '{print $2}'`));
这确实给了我变量 PID 中的进程 ID,但是我不再将输出发送到 RESPONSE。
我用作功能示例的代码是这样的。这个例子有效,但没有PID;是的,我没有分配PID,但这又是一个例子:
RESPONSE=$(nice -n 19 date);
wait ${PID};
echo "${RESPONSE}";
echo "${PID}";
这个例子给了我一个PID,但没有RESPONSE:
RESPONSE=$(nice -n 19 date & PID=(`jobs -l | awk '{print $2}'`));
wait ${PID};
echo "${RESPONSE}";
echo "${PID}";
任何人都知道如何使用PID 获得RESPONSE 的值吗?
【问题讨论】:
-
这在我看来就像你已经决定了如何做某事,但事情并不明显。我们需要描述您需要做什么,而不是您认为应该如何做。假设这里的某个人已经知道如何做你真正想做的事,而不是你告诉我们你认为你应该做的事......所以如果你告诉我们,那么你会得到一个有效的答案。我们现在所处的位置对您没有任何帮助。
-
吉姆,我想完全按照脚本显示的那样做。我想获取进程 ID,然后让脚本等待该进程结束,然后再继续下一步。但是——如果 Luis 说的是真的——那么也许简单地将函数包装在
$()中就足以确保在分配变量之前不会发生下一步?