有人可以提供几个关于如何使用的例子coproc吗?
我如何使用 BASH 魔法来实现这一目标?
我只想在屏幕上看到 stderr 输出,
但我希望将 stdout 和 stderr 都写入文件。
澄清:我希望 stdout 和 stderr 最终出现在同一个文件中。按照它们发生的顺序。
不幸的是,下面的答案都没有做到这一点。
当脚本运行时,其中的命令可能会向 stdout/stderr 输出一些文本。Bash 本身也可能输出一些文本。
但是如果同时运行几个脚本,就很难确定错误来自哪里。
那么是否可以在脚本的所有输出中插入前缀?就像是:
#!/bin/bash
prefix 'PREFIX' &2
echo "wrong!" >&2
Run Code Online (Sandbox Code Playgroud)
然后:
$ ./script.sh
PREFIXwrong!
Run Code Online (Sandbox Code Playgroud) 在我的脚本中,我目前有:
exec > >(tee -a /tmp/history.log) 2>&1
Run Code Online (Sandbox Code Playgroud)
这会将所有命令的 stderr 和 stdout 写入日志文件和 tty。不幸的是,这使得 tty 非常嘈杂,所以我宁愿在终端上只有 stdout,而在文件中同时包含 stdout 和 stderr (按正确的顺序,因此打开文件两次进行追加将不起作用)。对于我的一生,我无法弄清楚tee /dev/tty让它工作所需的神奇 exec 调用(甚至使用 )。