以以下bash脚本为例。有两个循环,第一个在后台执行,第二个打印myvar
的值:
#!/bin/bash
myvar=AAA
while true;
do
sleep 3
myvar=BBB
sleep 3
myvar=CCC
done &
while true;
do
echo "${myvar}"
sleep 1
done
我实际得到的输出:
AAA
AAA
AAA
...
The output I would like to get:
AAA
BBB
CCC
BBB
CCC
...
ps auxww | grep root
)时,并不是第一个命令的整个输出在传递到管道中的第二个命令之前就已经产生了。缓冲可能会发生,但所有命令都像是不同 shell 的子进程一样并行运行(实际上它们属于大多数 Unix 实现中的同一进程组,这可能会影响调度,但那是完全不同的话题)。 - Eduardo Ivanec