【问题标题】:How to append custom string to error output and redirect it to a file如何将自定义字符串附加到错误输出并将其重定向到文件
【发布时间】:2020-09-15 19:21:38
【问题描述】:

鉴于:

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

预期:

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

问题:

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

示例:

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

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

但是,如果同一命令遇到网络错误,它不会在此处写入“ABC=错误消息”,而是将注释写入文本文件并在控制台中显示该消息。

问题

如何调整这部分以捕获执行错误,在它们前面加上“ABC=”并发送到out.txt?

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

谢谢。

编辑

这解决了问题:

2>&1 | awk '{print "ABC="$0}'

【问题讨论】:

    标签: bash


    【解决方案1】:

    试试这个:

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

    【讨论】:

    • "2>&1 | awk '{print "ABC="$0}'" 修复了它。不得不使用 $0
    • @temuri 我只是从您的原始代码中获取了$1,我不知道您真正需要哪一部分(整行与第一个字段)。然而,这无关紧要。这里的重点是,您应该重定向哪个标准错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-18
    • 2010-10-26
    • 1970-01-01
    • 2015-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多