Bash 如何将自定义字符串附加到错误输出并将其重定向到文件

Bash 如何将自定义字符串附加到错误输出并将其重定向到文件,bash,Bash,鉴于: ffprobe命令,用于检测远程主机上mp4视频文件的持续时间 预期: ffprobe的输出以自定义字符串作为前缀,并重定向到文本文件 问题: 有时由于网络错误,ffprobe失败并显示一些错误消息。我想捕获该错误,用自定义字符串作为前缀并将其发送到文本文件 例如: 此命令将ABC=55追加到out.txt,其中55是发现的持续时间: ffprobe-v error-show_entries format=duration-of default=noprint_wrappers=1:no

鉴于:

ffprobe命令,用于检测远程主机上mp4视频文件的持续时间

预期:

ffprobe的输出以自定义字符串作为前缀,并重定向到文本文件

问题:

有时由于网络错误,ffprobe失败并显示一些错误消息。我想捕获该错误,用自定义字符串作为前缀并将其发送到文本文件

例如:

此命令将ABC=55追加到out.txt,其中55是发现的持续时间:

ffprobe-v error-show_entries format=duration-of default=noprint_wrappers=1:nokey=1'| awk'{print ABC=$1}'2>&1>>out.txt

然而,若同一个命令遇到网络错误,它不会在这里写入ABC=error消息,而是将noting写入文本文件并在控制台中显示该消息

问题:

如何调整此部分以捕获执行错误,并将其前缀为ABC=并发送到out.txt

|awk'{print ABC=$1}'2>&1>>out.txt

多谢各位

编辑

这就解决了问题:

2> &1 | awk'{打印ABC=$0}'

尝试一下:

ffprobe cmd... 2>&1|awk '{print "ABC="$1}' >output.txt

2> &1 | awk'{print ABC=$0}'修复了它。不得不使用$0@temuri我从你的原始代码中取了$1,我不知道你真正需要的是哪一部分,与第一个字段相比。然而,这是无关紧要的。这里的重点是,应该重定向哪个stderr。