シェルファイルのコマンドプロンプトを終了するには?
シェルファイルには以下が含まれます。
if(); then
// some unix code here
else
// want to exit from cmd prompt or Kill current cmd prompt
fi
@it知ってる人いますか?
答え1
スクリプトによって生成された対話型シェルを終了したいという意味であるとします。私もシェルですbash
。
そのシェルからスクリプトをインポートする場合を使用してくださいexit
。それ以外の場合は、SIGABRT
次を使用して親pid(インタラクティブシェル)に転送(またはbashを終了させる他の信号)します。
kill -ABRT "$PPID"
または、以下のないシェル$PPID
(Linuxのみ):
read -r _ _ _ ppid _ < "/proc/$$/stat"
kill -ABRT "$ppid"
答え2
良いクリスタン、私はあなたがGNU bashを使用していると仮定します。他のシェルは異なる場合がありますが、一般的なアイデアは同じでなければなりません。
Bashでは、環境変数には、$$
現在実行中のプロセスのプロセスIDと、$PPID
実行中の親プロセスのプロセスIDが含まれます。 Chrisが例を挙げたように、さらに上がることができますが、/ procはLinux固有です。
次の構造を使用して、ユーザーにログアウトするかどうかを尋ねることができます。
echo "Do you want to exit? (type YES or NO, then Enter)"
read answer
if test "${answer}" = "YES"; then
# insert process killing magic
fi
# we only get here if the user did not answer "YES"
可能であれば、GNUを使用してdialog
問題をよりきれいにすることができます。この場合、上記のコードの全体を次のように置き換えてください。
if dialog --yesno "Do you want to exit?" 10 50; then
# insert process killing magic
fi
# we only get here if the user did not answer "YES"
この番号は、10 50
ダイアログボックスのサイズ(それぞれ行と列)を指定します。
process killing magic
このように簡単かもしれませんkill $PPID
。