最后在shell中编写try catch

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (950)

有没有像linux try catch一样的linux bash命令?或者linux shell总是继续?

try {
   `executeCommandWhichCanFail`
   mv output
} catch {
    mv log
} finally {
    rm tmp
}
提问于
用户回答回答于
{ # your 'try' block
    executeCommandWhichCanFail &&
    mv output
} || { # your 'catch' block
    mv log
}

 rm tmp # finally: this will always happen
用户回答回答于

根据示例,无论脚本如何退出,似乎都在尝试执行类似于始终删除临时文件的操作。在Bash中这样做尝试trap内置命令来捕获EXIT信号。

#!/bin/bash

trap 'rm tmp' EXIT

if executeCommandWhichCanFail; then
    mv output
else
    mv log
    exit 1 #Exit with failure
fi

exit 0 #Exit with success

脚本退出时始终执行该rm tmp语句trap,因此将始终尝试删除文件“tmp”。

安装的陷阱也可以重置; 仅使用信号名称调用陷阱将重置信号处理程序。

trap EXIT

有关更多详细信息,请参阅bash手册页: man bash

扫码关注云+社区

领取腾讯云代金券