惯用的 bash 方式运行可选操作而不会对退出代码产生副作用

惯用的 bash 方式运行可选操作而不会对退出代码产生副作用

该脚本将退出并显示测试结果,从调用者的角度来看,这是不希望的。应该如何实施呢?

#!/bin/bash
test -n "" && echo "test passed"

答案1

只需添加一个显式的:

exit 0

如果您不想报告任何失败,请在脚本末尾添加。

您还可以这样做:

#! /bin/sh -
ret=0

cmd || ret=$? # we care about the failure of cmd

test -n "" && echo test # we don't care about the failure of test or echo

exit "$ret"

对于您的特定示例,您可以重写它:

test -z "" || echo test passed

(如果失败,仍然会报告错误echo,但您可能想要报告该错误,因为这表明出现了问题)

或者:

test -n "" && echo test passed || : ignore

:命令总是返回一个成功退出状态。

相关内容