如何从失败的命令返回退出代码0

mes*_*600 3 unix linux bash shell

我想从失败的命令返回退出代码“ 0”。有没有比这更简单的方法了?

function a() {
  ls aaaaa 2>&1;
}

if ! $(a); then
  return 0
else
  return 5
fi
Run Code Online (Sandbox Code Playgroud)

小智 5

只需附加return 0到函数以强制函数始终成功退出。

function a() {
  ls aaaaa 2>&1
  return 0
}

a
echo $? # prints 0
Run Code Online (Sandbox Code Playgroud)

如果出于任何原因希望以内联方式执行此操作,可以将其附加|| true到命令:

ls aaaaa 2>&1 || true
echo $? # prints 0
Run Code Online (Sandbox Code Playgroud)

如果您想反转退出状态,只需在命令前加上 !

! ls aaaaa 2>&1
echo $? # prints 0

! ls /etc/resolv.conf 2>&1
echo $? # prints 1
Run Code Online (Sandbox Code Playgroud)

另外,如果您陈述要总体上实现的目标,我们也许可以指导您获得更好的答案。