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