スクリプトで「newgrp」コマンドを実行中に問題が発生する

スクリプトで「newgrp」コマンドを実行中に問題が発生する

スクリプトでワークグループを変更したいです。だからnewgrp test_grp1台本に一行を書いた。しかし、この行を実行すると、私のスクリプトは自動的に終了します。この問題を克服するための解決策はありますか?

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

メモ:私はUnix AIXオペレーティングシステムを使用しています。

ベストアンサー1

newgrp指定したグループを使用してサブシェルを起動します。したがって、スクリプトのこの行は、サブシェルが完了するまで完了しません。

またはを使用してnewgrpも処理方法が異なります。もう一度bashkshkshexec /usr/bin/newgrp [group]execnewgrp戻らないでください。 (一部文書参照ここ.)

戻りたい場合、変更されたグループIDを使用してそのサブシェルでコマンドを実行したい場合は、リダイレクトを使用できます。

たとえば、

#!/bin/ksh

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

注:で/usr/bin/newgrp暗黙的に回避するには、明示的に呼び出してください。スクリプトの最後のコマンドは、元のグループIDを使用して元のシェルで実行されます。execksh

おすすめ記事