ターミナルでbashスクリプトの繰り返しを停止する方法は?

ターミナルでbashスクリプトの繰り返しを停止する方法は?

例えば、

#!/bin/bash
while :
do
    sl
done

このbashスクリプトを終了するには?

ベストアンサー1

  1. Ctrl-Z一時停止スクリプトを押す
  2. kill %%

プロセスIDではなく、現在のシェルで最後に一時停止したバックグラウンドジョブにシグナル(デフォルトではSIGTERM)を送信したいと%%Bashの組み込み機能に通知します。kill

番号または名前でアクションを指定することもできます。たとえば、^Zでジョブを一時停止すると、bashは次のようにジョブ番号を通知します。[n]+ Stoppedここで、nジョブ番号は角かっこ内にあります。

ジョブ制御とジョブ終了の詳細については、bashまたはbashのマニュアルページで、、、および(help jobsすべて大文字)を検索してください。help fghelp bghelp killJOB CONTROLjobspec

例えば

$./killme.sh
./killme.sh: 行 4: sl: コマンドが見つかりません
./killme.sh: 行 4: sl: コマンドが見つかりません
./killme.sh: 行 4: sl: コマンドが見つかりません
./killme.sh: 行 4: sl: コマンドが見つかりません
./killme.sh: 行 4: sl: コマンドが見つかりません
...
...
...
./killme.sh: 行 4: sl: コマンドが見つかりません
^Z
[1]+停止しました。/killme.sh
$kill%%
$
[1]+ ./killme.sh 終了

この例では、ジョブ番号は1なので、次kill %1のように機能します。kill %%

(注:インストールしていないslので、出力は単に「コマンドが見つかりません」です。あなたの場合、slが生成するすべての出力を取得します。問題ありません。中断しても同じように^Z機能kill %%します。)

おすすめ記事