Scripting

在腳本中執行“newgrp”命令時出現問題

  • August 17, 2011

我想更改腳本中的工作組。所以我newgrp test_grp1在腳本中寫了一行。但是我的腳本在執行此行後會自動退出。有什麼解決方案可以克服這個問題嗎?

#/bin/ksh
...
newgrp test_grp1
...

**注意:**我使用的是 Unix AIX 作業系統。

newgrp使用您指定的組啟動一個子shell。因此,在該子shell 完成之前,您腳本中的該行不會完成。

newgrp如果您使用bashor ,則的處理也不同kshksh將其實現為等效於exec /usr/bin/newgrp [group]. 所以,就像execnewgrp永遠不會回來。(請參閱此處的一些文件。)

如果您希望它返回,並希望在更改組標識的子shell 中執行命令,您可以使用重定向。

例如:

#!/bin/ksh

echo "Before newgrp"
/usr/bin/newgrp users <<EONG
echo "hello from within newgrp"
id
EONG
echo "After newgrp"

注意:/usr/bin/newgrp被顯式呼叫以避免隱含exec的 from ksh。該腳本中的最後一個命令將在原始 shell 中以原始組身份執行。

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