だからこれが意味があるかどうかわからないので、詳しく説明します。
./frontend を使用して起動できるこのプログラム (フロントエンド) があります。端末は入力するまでプログラムに残ります! (またはCtrl C)。これが私がしたいことです
./frontend.sh
Wait 30
!
ところでプログラムに詰まっています。また、他の端末でKillallフロントエンドを使用して終了することもできますが、スクリプトでこれを行うのには役立ちません。この問題を克服する方法はありますか?
答え1
特に明記しない限り、シェルは各コマンドを順次実行します。スクリプトが を呼び出してfrontend.sh
終了 frontend.sh
しない場合、シェルは次のコマンドを実行せずにスクリプトが終了するのを待ちます。
目標を達成する1つの方法は、frontend.sh
バックグラウンドで演算子を開始して&
から、対応するプロセスID(特殊パラメータを介して取得できます$!
)をkill
コマンドに渡して演算子を終了することです。
#!/bin/sh
# start frontend.sh in the background
./frontend.sh &
sleep 30
# the special parameter $! holds the process ID of the last background process
if kill $!; then
echo "frontend.sh was killed, do more work here"
else
echo "failed to kill frontend.sh, handle the error here"
fi