在灰烬中打开3个工作,即
sh & sh & sh &
并用ie。
计算这些工作jobs -p | wc -l
显示
3
没关系。 但是尝试使用
将此作业计数分配给变量JOBNR=$(jobs -p | wc -l)
并使用
打印此变量echo $JOBNR
显示
0
为什么呢?也许在任务期间,新的Shell(没有工作)被打开了? 什么是最好的解决方案?
提前致谢。
答案 0 :(得分:1)
是的,这是shell如何实现命令替换的问题。在bash
中,JOBNR
获取值3,但在dash
中获得0。
答案 1 :(得分:0)
最后,我找到了解决问题的方法 - 分阶段完成并注意引用:
JOBNR=$(jobs -p); JOBNR=$(echo "$JOBNR" | wc -w); echo $JOBNR
做到了。
第一个表达式执行原始作业并在JOBNR
中存储一个列表(带有一些行)。
由于$JOBNR
中存储了多行,因此引用JOBNR
(带引号(!)并使用wc
计算单词可以(重新)分配给{{1} “常规”方式(JOBNR
)。