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

时间:2016-02-12 12:14:34

标签: shell posix variable-assignment jobs ash

在灰烬中打开3个工作,即

sh & sh & sh &

并用ie。

计算这些工作
jobs -p | wc -l

显示

3

没关系。 但是尝试使用

将此作业计数分配给变量
JOBNR=$(jobs -p | wc -l)

并使用

打印此变量
echo $JOBNR

显示

0

为什么呢?也许在任务期间,新的Shell(没有工作)被打开了? 什么是最好的解决方案?

提前致谢。

2 个答案:

答案 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)。