如何将 std 和 err 输出通过管道传输到 bash 脚本中的单独命令?
How pipe std and err output to separate commands in bash script?
我有一个 bash 脚本执行长 运行 命令。我想在命令打印到 stdout 的每一行前面加上 $stdprefix,在打印到 stderr 的每一行前面加上 $errprefix。
我不想将输出存储到变量中,更不想存储到文件中,因为我必须等到命令执行完毕才能看到输出。
您可以使用:
# your prefixes
stdprefix="stdout: "
errprefix="stderr: "
# sample command to produce output and error
cmd() { echo 'output'; echo >&2 'error'; }
现在独立重定向 stdout 和 stderr:
{ cmd 2>&3 | awk -v p="$stdprefix" '{print p [=11=]}'; } 3>&1 1>&2 |
awk -v p="$errprefix" '{print p [=11=]}'
stderr: error
stdout: output
只需将 cmd
替换为您的长 运行 命令即可。
我有一个 bash 脚本执行长 运行 命令。我想在命令打印到 stdout 的每一行前面加上 $stdprefix,在打印到 stderr 的每一行前面加上 $errprefix。
我不想将输出存储到变量中,更不想存储到文件中,因为我必须等到命令执行完毕才能看到输出。
您可以使用:
# your prefixes
stdprefix="stdout: "
errprefix="stderr: "
# sample command to produce output and error
cmd() { echo 'output'; echo >&2 'error'; }
现在独立重定向 stdout 和 stderr:
{ cmd 2>&3 | awk -v p="$stdprefix" '{print p [=11=]}'; } 3>&1 1>&2 |
awk -v p="$errprefix" '{print p [=11=]}'
stderr: error
stdout: output
只需将 cmd
替换为您的长 运行 命令即可。