終了せずにxterm -e file.shを実行したい。
ファイルでは、コマンドをバックグラウンドに送信していますが、スクリプトが完了しても、コマンドはまだ完了していません。
私が現在やっていることは:
(cd /myfolder; /xterm -ls -geometry 115x65 -sb -sl 1000)
そして、ウィンドウがポップアップした後
sh file.sh
exit
私がやりたいことは次のようなものです:
(cd /myfolder; /xterm -ls -geometry 115x65 -sb -sl 1000 -e sh file.sh)
終了せずに、バックグラウンドのコマンドが完了するまで待機します。
誰でもそれを行う方法を知っていますか?
シェルスクリプトに組み込まれているwait
を使用します。すべてのバックグラウンドジョブが完了するまで待機します。
実例:
#!/bin/bash
# Script to show usage of wait
sleep 20 &
sleep 20 &
sleep 20 &
sleep 20 &
sleep 20 &
wait
出力
sgulati@maverick:~$ bash test.sh
[1] Done sleep 20
[2] Done sleep 20
[3] Done sleep 20
[4]- Done sleep 20
[5]+ Done sleep 20
sgulati@maverick:~$
hold
オプションを使用:
xterm -hold -e file.sh
-hold保留リソースをオンにします。つまり、シェルコマンドが完了しても、xtermはすぐにウィンドウを破棄しません。ウィンドウマネージャーを使用してウィンドウを破棄または強制終了するまで、またはHUPやKILLなどの信号を送信するメニューエントリを使用するまで待機します。
私は-holdを試行しましたが、xtermを非標準の手段(ウィンドウマネージャー、killコマンド)を介して閉じる必要がある無応答状態のままにしています。終了できるシェルを開いておきたい場合は、コマンドの最後にそのシェルを追加してみてください。
xterm -e "cd /etc; bash"
スーパーユーザー で答えを見つけました。
以前の回答に基づいて、bashの代わりに$ Shellを指定すると、ユーザーが好むシェルが使用されます。
xterm -e "cd /etc; $Shell"