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
paplay
INT信号をブロックしてそれに影響を与えると、親シェルがデフォルトハンドラを実行できなくなるように見えます。
親シェルにハンドラをインストールし、そこからハンドラをリセットして信号を再生成すると、より良い方法で問題を解決できます。
trap 'trap - SIGINT; kill -SIGINT $$' SIGINT;
while :; do paplay /usr/share/sounds/linuxmint-login.wav ; done
(このexit
方法では、実行プログラムプロセスは子プロセスが自動的に終了したと思いますが、2番目の方法ではスクリプトが終了したようです。SIGINT
)
答え2
問題は実際にについてですpaplay
。信号をブロックできますか?または(例:アーチスウィキ)おそらく忙しいかもしれません。
sleep 1
ループに入れてスクリプトを簡単に停止できます。