Linux
從重定向文件腳本中獲取退出程式碼的最佳方法
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