将作业计数分配给变量 (POSIX-Shell)

Assign job count number to variable (POSIX-Shell)

在 ash 中打开 3 个工作,即

sh & sh & sh &

并用

计算此作业
jobs -p | wc -l

显示

3

没关系。 但是试图将此工作计数分配给具有

的变量
JOBNR=$(jobs -p | wc -l)

并用

打印这个变量
echo $JOBNR

显示

0

为什么?也许在分配期间打开了一个新的 Shell(没有工作)? 最好的解决方案是什么?

提前致谢。

是的,这是shell如何实现命令替换的问题。在 bash 中,JOBNR 获得值 3,但在 dash 中,0.

最后我找到了解决我问题的方法 - 分阶段进行并注意引号: JOBNR=$(jobs -p); JOBNR=$(echo "$JOBNR" | wc -w); echo $JOBNR 完成任务。

第一个表达式执行原始作业并在 JOBNR.

中存储一个列表(包含一些行)

回显 $JOBNR(带引号 (!) 因为 JOBNR 中存储了不止一行)并计算带有 wc 的单词可以(重新)分配给 JOBNR "regular" 方式 (VAR=$(command)).