2015-01-08 151 views
1

我正在清理脚本的输出。例如:Shell脚本错误处理

rm -f ./file 

没有这样的文件或目录

我要实现一些错误检查该命令,相当于一个try/catch声明。换句话说,如果命令失败,我想捕捉错误。

+5

'RM -f blahblahblah'没有我的系统上打印错误消息。对你有帮助吗?什么系统? –

+0

只是一个提示:搜索'set -e','trap' ... – anishsane

回答

3

为什么不使用一个简单的脚本achive相同的行为?

file=$1 
if [ ! -f $file ]; then 
    echo "File not found!" 
else 
    rm -f $file 
fi 

当您运行它时,脚本会告诉您给定的文件是否不存在。

您也可以在echo命令后面使用2>&1重定向到stderrstdout。您还可以在if语句的末尾添加exit 1,因为退出状态1通常表示该命令未成功执行。

这不会像你打算的那样工作,但在bash中这是检测错误的最接近的方法。

2

使用set -e或者您可以使用&&||

4

的Python:

try: 
    os.remove('./file') 
    champagne_for_everybody 
except: 
    throw_myself_in_the_river 

壳牌:

if rm ./file 
then 
    champagne_for_everybody 
else 
    throw_myself_in_the_river 
fi 

注:

  • 不要使用-f - POSIX rm忽略使用-f时丢失的文件。
  • 如果可以避免,请勿使用shell。 Python和其他现代语言有更复杂的错误处理内置的。