Linux

從重定向文件腳本中獲取退出程式碼的最佳方法

  • July 29, 2021
if [ ! -z "admin_us" ]
then
newgrp admin_us<< END
command=` abc.sh `
END
fi
echo $?

我們在這裡看到的是,退出碼總是0,即使abc.sh失敗了,還有什麼更好的獲取退出碼的方法呢?我的最後一個選擇是將它保存在一個臨時文件中並在外面閱讀。

您的heredoc 腳本需要以$ 退出?作為退出程式碼。

例如最小工作範例(假設我的 UID 是您的腳本的成員users並且不需要您的abc.sh腳本(false改為使用)

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

注意:newgrp派生一個新的外殼,並且不能更改$command其父級中的值。您可能想要更多類似的東西:

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

順便說一句,不要使用反引號。改為使用$(...)。不推薦使用反引號,僅保留與舊 shell/腳本的向後兼容性。請參閱*sh shell 中的反引號(即)是否已棄用?cmd

引用自:https://unix.stackexchange.com/questions/662438