私のスクリプトはで終了できません Ctrl+C キー。エラーです。
スクリプトを変更して終了可能にする方法を説明してください Ctrl+C。
#!/bin/bash
while true; do
paplay /usr/share/sounds/phone.wav
done
親シェルでSIGINTをキャッチしてシェルを終了すると、paplayも停止します。
trap exit SIGINT;
while true; do paplay /usr/share/sounds/phone.wav ; done
paplay
がINTシグナルをブロックしているように見えます。これは、親シェルがデフォルトのハンドラーを実行できないようにするためです。
ハンドラーをリセットしてシグナルを再発生させる親シェルにハンドラーをインストールすると、おそらくより良い方法で解決されます。
trap 'trap - SIGINT; kill -SIGINT $$' SIGINT;
while :; do paplay /usr/share/sounds/linuxmint-login.wav ; done
(exit
アプローチでは、ランチャープロセスは子が自発的に終了したと見なしますが、2番目のアプローチでは、スクリプトがSIGINT
で強制終了されたように見えます)。
質問は実際にはpaplay
に関するもので、信号をブロックしている可能性があります。または( Arch Wiki で示唆されているように)単に忙しすぎる可能性があります。
sleep 1
をループに入れることで、スクリプトを簡単に停止できます。