从重定向文档脚本获取退出代码的最佳方法

从重定向文档脚本获取退出代码的最佳方法
if [ ! -z "admin_us" ]
then
newgrp admin_us<< END
 command=` abc.sh `
END
fi
echo $?

我们在这里看到的是,退出代码始终为 0,即使abc.sh失败,获取退出代码的更好方法是什么?对我来说,最后一个选择是将其保存在临时文件中并在外部读取。

答案1

你的heredoc脚本需要以$退出?作为退出代码。

例如,最小工作示例(假设我的 UID 是 的成员users并且不需要您的abc.sh脚本(false而是使用)

#!/bin/bash
if [ 1 == 1 ]; then
newgrp users << END
 command=$(false)
 exit $?
END
fi
echo $?

注意:分叉一个新的 shell,并且不能更改其父 shell 中newgrp的值。$command你可能想要更多类似的东西:

if [ ! -z "admin_us" ]; then
  command=$(newgrp admin_us <<<'abc.sh')
fi
echo "$?"
echo "$command"

顺便说一句,不要使用反引号。代替使用$(...)。反引号已被弃用,仅保留以向后兼容旧的 shell/脚本。看cmd*sh shell 中的反引号(即 )是否已被弃用?

相关内容