将作业计数分配给变量 (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)
).
在 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)
).