加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

检测bash脚本中的程序错误?

发布时间:2020-12-16 01:52:06 所属栏目:安全 来源:网络整理
导读:我正在尝试编写我的第一个半高级bash脚本,它将以文件名的形式输入avi视频,将其发送到ffmpeg转换为mp4(保留原始名称),然后将其交给MP4Box . 以下是我正在做的事情…… #!/usr/bin/bashffmpeg -i $0 -acodec libfaac -ab 128k -ac 2 -vcodec libx264 -vpre hq
我正在尝试编写我的第一个半高级bash脚本,它将以文件名的形式输入avi视频,将其发送到ffmpeg转换为mp4(保留原始名称),然后将其交给MP4Box .

以下是我正在做的事情……

#!/usr/bin/bash
ffmpeg -i $0 -acodec libfaac -ab 128k -ac 2 -vcodec libx264 -vpre hq -crf 22 -threads 0 ($0).mp4
MP4Box -inter 500 ($0).mp4

>我可以为第一个程序调用做一些try / catch,以确保MP4Box获得可行的输入吗?
>我是否应该为错误捕捉而烦恼,我是否应该依靠程序本身来为我做这件事?

解决方法

根据另一个程序的成功执行一个程序的一种快速方法是使用&&amp ;. (以下命令都是伪代码)

first-cmd && second-cmd

在这种情况下,只有first-cmd返回true才会执行second-cmd.

同样,您可以使用||测试失败并采取适当的措施

bad-cmd || echo "failed"

您可以通过各种方式组合它们:

good-cmd && echo "succeeded" || echo "failed"

bad-cmd || {
    recovery-cmd || 
    echo "recovery failed && 
    echo "recovered"
}

当然,使用特殊变量$通常更清晰?其他人已经注意到了.

您经常需要将错误消息重定向到/ dev / null或将其捕获到变量中.

bad-cmd 2>/dev/null               # send error message to the bit bucket
var=$(good-cmd)                   # capture stdout
var=$(bad-cmd 2>&1)               # capture stdout and stderr
var=$(bad-cmd 2>&1 >/dev/null)    # capture only stderr

然后,您可以处理错误的文本以获取代码中的条件操作的其他信息.

见:Capture output in a variable和How can I redirect stderr to a pipe?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读