我正在清理脚本的输出。例如:
rm -f ./file
没有这样的文件或目录
我想为此命令实现一些错误检查,相当于 try/catch
语句。换句话说,如果命令失败,我想捕获错误。
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
- POSIXrm
在使用-f
时忽略丢失的文件。 - 如果可以避免,请不要使用shell。Python和其他现代语言内置了更复杂的错误处理。
为什么不使用简单的脚本?
file=$1
if [ ! -f $file ]; then
echo "File not found!"
else
rm -f $file
fi
当您运行它时,脚本将告诉您给定文件是否存在。
您还可以通过在 echo 命令后使用 2>&1
重定向到stderr
和stdout
。您还可以在 if 语句的末尾添加 exit 1
,因为退出状态 1 通常表示命令未成功执行。
这不会以您想要的确切方式工作,但在 bash 中,这是检测错误的最接近方法。
使用set -e
或者您可以使用&&
或||
实现相同的行为