用 ie 在 ash 中开 3 个工作
sh & sh & sh &
并用 ie 计算这个工作
jobs -p | wc -l
节目
3
没关系。但试图将此作业计数分配给一个变量
JOBNR=$(jobs -p | wc -l)
并打印这个变量
echo $JOBNR
节目
0
为什么?也许在分配期间打开了一个新的外壳(没有工作)?什么可能是最好的解决方案?
提前致谢。
用 ie 在 ash 中开 3 个工作
sh & sh & sh &
并用 ie 计算这个工作
jobs -p | wc -l
节目
3
没关系。但试图将此作业计数分配给一个变量
JOBNR=$(jobs -p | wc -l)
并打印这个变量
echo $JOBNR
节目
0
为什么?也许在分配期间打开了一个新的外壳(没有工作)?什么可能是最好的解决方案?
提前致谢。
是的,这是 shell 如何实现命令替换的问题。在bash
,JOBNR
获得值 3,但在dash
, 0。
最后,我为我的问题找到了解决方案——分阶段进行并注意引号:
JOBNR=$(jobs -p); JOBNR=$(echo "$JOBNR" | wc -w); echo $JOBNR
完成工作。
第一个表达式执行原始工作并将列表(带有一些行)存储在JOBNR
.
回显$JOBNR
(带有引号(!),因为在 中存储了不止一行JOBNR
)和计数单词wc
可以(重新)分配给JOBNR
“常规”方式(VAR=$(command)
)。