bash 抓捕异常_shell - Bash中是否有TRY CATCH命令

本文介绍了在Bash脚本中如何模拟TRY/CATCH异常处理机制。虽然Bash本身不支持TRY/CATCH,但可以通过设置错误处理选项、使用子shell和陷阱命令来实现类似的功能。示例代码展示了如何利用这些技术创建一个简单的TRY/CATCH结构来处理脚本中的错误。
摘要由CSDN通过智能技术生成

shell - Bash中是否有TRY CATCH命令

我正在编写一个shell脚本,需要检查是否已安装终端应用程序。 我想使用TRY / CATCH命令来执行此操作,除非有更简洁的方法。

10个解决方案

351 votes

Bash中有TRY CATCH命令吗?

没有。

Bash并没有像许多编程语言中那样多的奢侈品。

bash中没有if...else; 但是,使用command2或command1可以实现类似的行为。

使用if...else:

如果if...else失败,则command2运行如下

command1 || command2

同样,如果command1成功,将使用if...else,command2

最接近if...else如下

{ # try

command1 &&

#save your output

} || { # catch

# save log for exception

}

bash也包含一些错误处理机制

set -e

如果简单命令失败,它将立即停止您的脚本。 我认为这应该是默认行为。 由于这些错误几乎总是意味着意外的事情,因此继续执行以下命令并不是“理智”。

而且为什么不是if...else.这是你最好的朋友。

Jayesh Bhoi answered 2019-03-05T20:59:35Z

73 votes

基于我在这里找到的一些答案,我为自己的项目提供了一个小帮手文件:

trycatch.sh

#!/bin/bash

function try()

{

[[ $- = *e* ]]; SAVED_OPT_E=$?

set +e

}

function throw()

{

exit $1

}

function catch()

{

export ex_code=$?

(( $SAVED_OPT_E )) && set +e

return $ex_code

}

function throwErrors()

{

set -e

}

function ignoreErrors()

{

set +e

}

这是一个如何使用的示例:

#!/bin/bash

export AnException=100

export AnotherException=101

# start with a try

try

( # open a subshell !!!

echo "do something"

[ someErrorCondition ] && throw $AnException

echo "do something more"

executeCommandThatMightFail || throw $AnotherException

throwErrors # automaticatly end the try block, if command-result is non-null

echo "now on to something completely different"

executeCommandThatMightFail

echo "it's a wonder we came so far"

executeCommandTh

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值