Saya punya skrip berikut:
#!/bin/bash
echo "We are $$"
trap "echo HUP" SIGHUP
cat # wait indefinitely
Ketika saya mengirim SIGHUP(menggunakan kill -HUP pid), tidak ada yang terjadi.
Jika saya mengubah sedikit skrip:
#!/bin/bash
echo "We are $$"
trap "kill -- -$BASHPID" EXIT # add this
trap "echo HUP" SIGHUP
cat # wait indefinitely
... lalu skrip melakukan echo HUPhal yang benar saat keluar (ketika saya menekan Ctrl + C):
roger@roger-pc:~ $ ./hupper.sh
We are 6233
^CHUP
Apa yang sedang terjadi? Bagaimana saya harus mengirim sinyal (tidak harus SIGHUP) ke skrip ini?
while true; do read; donepada akhirnya, jika tidak memasukkan teks menyebabkannya berhenti juga, dan saya ingin itu berhenti pada Ctrl + C.
catproses selesai. Coba skrip asli Anda dan tekanCtrl+Duntuk membuatcatproses keluar. Sementaracatproses berada di latar depan,HUPsinyal tidak ditindaklanjuti. Coba lagi dengancatdiganti olehread(built-in shell).