0
我试图在Linux上的shell脚本中捕获失败命令的错误代码。在这种情况下我ffprobe命令:在一行上检查与多个命令的shell脚本错误
#!/bin/sh
videoduration=$(ffprobe -loglevel error -show_format myfile.avi | grep duration | cut -d= -f2)
if [ $? -ne 0 ]; then
echo "ERROR"
exit 1
fi
echo $videoduration
如果我更改命令给一个假的文件名:
#!/bin/sh
videoduration=$(ffprobe -loglevel error -show_format myfile.av | grep duration | cut -d= -f2)
if [ $? -ne 0 ]; then
echo "ERROR"
exit 1
fi
echo $videoduration
错误代码是没用的,因为这里的技术状态代码仍为0码将仍然有一个成功grep
和cut
。如何将此命令保存在单个变量中,但如果ffprobe命令失败,则会退出并显示错误消息?
编辑:我更喜欢非壳特定的答案,如果有的话。另外,建议重复涵盖了类似的情况,但这里的唯一潜在的选择是创建一个临时文件,像这样:
f=`mktemp`
(ffprobe ...; echo $?>$f) | ...
e=`cat $f` #error in variable e
rm $f
看起来像一个黑客创建一个临时文件?如果这是唯一的选择,我将如何将它存储在一个变量?
我不这么认为。我更喜欢非特定于shell的答案。我会相应地编辑。 – Tom 2013-04-04 03:40:50