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 中的反引号(即 )是否已被弃用?