2

用 ie 在 ash 中开 3 个工作

sh & sh & sh &

并用 ie 计算这个工作

jobs -p | wc -l

节目

3

没关系。但试图将此作业计数分配给一个变量

JOBNR=$(jobs -p | wc -l)

并打印这个变量

echo $JOBNR

节目

0

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

提前致谢。

4

2 回答 2

1

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

于 2016-02-12T15:30:41.100 回答
0

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

第一个表达式执行原始工作并将列表(带有一些行)存储在JOBNR.

回显$JOBNR(带有引号(!),因为在 中存储了不止一行JOBNR)和计数单词wc可以(重新)分配给JOBNR“常规”方式(VAR=$(command))。

于 2016-02-17T07:18:29.277 回答