Scripting
在腳本中執行“newgrp”命令時出現問題
我想更改腳本中的工作組。所以我
newgrp test_grp1
在腳本中寫了一行。但是我的腳本在執行此行後會自動退出。有什麼解決方案可以克服這個問題嗎?#/bin/ksh ... newgrp test_grp1 ...
**注意:**我使用的是 Unix AIX 作業系統。
newgrp
使用您指定的組啟動一個子shell。因此,在該子shell 完成之前,您腳本中的該行不會完成。
newgrp
如果您使用bash
or ,則的處理也不同ksh
。ksh
將其實現為等效於exec /usr/bin/newgrp [group]
. 所以,就像exec
,newgrp
永遠不會回來。(請參閱此處的一些文件。)如果您希望它返回,並希望在更改組標識的子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
的 fromksh
。該腳本中的最後一個命令將在原始 shell 中以原始組身份執行。