【发布时间】:2018-11-16 03:38:18
【问题描述】:
假设您有一系列不属于您的脚本,因此无法修改,它们可能会在不重定向 stdout 和 stderr 的情况下生成后台进程。我注意到,在 bash 中,如下例所示,如果后台进程仍在运行(并且为 stdout 或 stderr 打开了文件描述符),则在脚本完成时不会返回输出。
./runme.sh 2>&1| tee runme.out
其中runme.sh定义为:
#!/bin/bash
# Start a fake daemon
perl -e 'while(1) { sleep(1) }' &
printf "Enter your name: "
read name
echo "Goodbye $name"
如何在 bash 中运行这样的脚本,同时捕获所有输出并在脚本完成后返回提示符?
【问题讨论】: