BashスクリプトはCtrl + Cで終了しません。

BashスクリプトはCtrl + Cで終了しません。

Ctrl私のスクリプトは+キーで終了できませんC。これは間違いです。

Ctrl+で終了するようにスクリプトを変更する方法を説明してくださいC

#!/bin/bash

while true; do
  paplay /usr/share/sounds/phone.wav
done

答え1

親シェルからSIGINTをキャプチャしてシェルを終了すると、paplayも閉じます。

trap exit SIGINT;
while true; do paplay  /usr/share/sounds/phone.wav ; done

paplayINT信号をブロックしてそれに影響を与えると、親シェルがデフォルトハンドラを実行できなくなるように見えます。

親シェルにハンドラをインストールし、そこからハンドラをリセットして信号を再生成すると、より良い方法で問題を解決できます。

trap 'trap - SIGINT; kill -SIGINT $$' SIGINT; 
while :; do paplay  /usr/share/sounds/linuxmint-login.wav ; done 

(このexit方法では、実行プログラムプロセスは子プロセスが自動的に終了したと思いますが、2番目の方法ではスクリプトが終了したようです。SIGINT

答え2

問題は実際にについてですpaplay。信号をブロックできますか?または(例:アーチスウィキ)おそらく忙しいかもしれません。

sleep 1ループに入れてスクリプトを簡単に停止できます。

関連情報