检测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获得可行的输入吗? 解决方法
根据另一个程序的成功执行一个程序的一种快速方法是使用&& ;. (以下命令都是伪代码)
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? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |