21

終了せずに 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)

終了せずに、バックグラウンドのコマンドが終了するまで待ちます。

誰もそれを行う方法を知っていますか?

4

5 に答える 5

30

使用holdオプション:

xterm -hold -e file.sh

-hold hold リソースをオンにします。つまり、xterm は、シェル コマンドが完了したときに、そのウィンドウをすぐに破棄しません。ウィンドウ マネージャを使用してウィンドウを破棄/強制終了するか、HUP や KILL などのシグナルを送信するメニュー エントリを使用するまで待機します。

于 2012-11-09T06:52:58.203 に答える
12

-hold を試してみましたが、xterm が応答しない状態のままになり、非標準の手段 (ウィンドウ マネージャー、kill コマンド) で閉じる必要があります。終了できるオープンシェルが必要な場合は、そのシェルをコマンドの最後に追加してみてください。

xterm -e "cd /etc; bash"

Super Userで答えに出会いました。

于 2014-05-05T22:56:45.913 に答える
7

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:~$ 
于 2012-06-01T06:47:26.857 に答える