获取"sh -e"中的返回值

gvl*_*gvl 3 shell sh

我正在编写一个shell脚本#!/bin/sh作为第一行,以便脚本在第一个错误时退出.文件中有几行是以这种形式command || true存在的,如果命令失败,脚本就不会在那里退出.但是,我仍然想知道命令的退出代码.如何在不必使用set +e暂时禁用该行为的情况下获取退出代码?

pb2*_*b2q 5

你的问题似乎暗示着set -e.

假设set -e:

而不是command || true你可以使用command || exitCode=$?.脚本将继续并且将command捕获退出状态exitCode.

$? 是一个内部变量,用于保存最后一个命令的退出代码.

由于||短路如果command成功,则exitCode=0在测试之间设置或改为使用:command && exitCode=0 || exitCode=$?.

但是更喜欢set -e完全避免使用样式脚本,而是在脚本中为每个命令添加显式错误处理.