我正在编写一个shell脚本#!/bin/sh作为第一行,以便脚本在第一个错误时退出.文件中有几行是以这种形式command || true存在的,如果命令失败,脚本就不会在那里退出.但是,我仍然想知道命令的退出代码.如何在不必使用set +e暂时禁用该行为的情况下获取退出代码?
你的问题似乎暗示着set -e.
假设set -e:
而不是command || true你可以使用command || exitCode=$?.脚本将继续并且将command捕获退出状态exitCode.
$? 是一个内部变量,用于保存最后一个命令的退出代码.
由于||短路如果command成功,则exitCode=0在测试之间设置或改为使用:command && exitCode=0 || exitCode=$?.
但是更喜欢set -e完全避免使用样式脚本,而是在脚本中为每个命令添加显式错误处理.