trap Yerleşiği
Önceki Bourne Kabuğu Yerleşikleri Sonraki
trap Yerleşiği
trap [-lp] [argüman] [sinyal …]
argüman içindeki komutlar, kabuk sinyal sinyalini aldığında okunur ve çalıştırılır[107]. argüman bir boş dizge ise her sinyal sinyali kabuk ve onu çağıran komutlar tarafından yoksayılır[108]. argüman verilmezse (ve tek bir sinyal varsa) ya da - verilirse, belirtilen tüm sinyallere kabuk başlatıldığındaki değerleri yerleştirilir. [109]. Sadece -p seçeneği verilmişse trap, her sinyal numarası ile ilişkili komutların listesini kabuk girdisi olarak kullanılabilecek biçimde gösterir. -l seçeneği kabuğun sinyal isimlerini numaraları ile birlikte listelemesini sağlar. Her sinyal ya bir sinyal ismi ya da bir sinyal numarası olarak verilmelidir. Sinyal isimleri harf büyüklüğüne duyarlıdır ve SIG öneki isteğe bağlıdır. Eğer sinyal 0 ya da EXIT ise argüman kabuk çıkarken çalıştırılır. Eğer sinyal olarak DEBUG verilmişse, argüman komutu her basit komuttan önce, for komutundan, case komutundan, select komutundan, her aritmetik for komutundan ve bir kabuk işlevinde çalıştırılacak ilk komuttan önce çalıştırılır. DEBUG kapanının etkisi ile ilgili daha ayrıntılı açıklama için shopt yerleşiğinin extglob seçeneğinin açıklamasına bakınız. Eğer bir sinyal ERR ise argüman komutu, aşağıdaki koşullara konu olan sıfırdan farklı çıkış durumuna sahip her komut için çalıştırılır. Başarısız komut, hemen ardından until veya while gelen bir komut listesinin parçasıysa ya da if deyiminde sınamanın bir parçasıysa veya bir && veya || listesinin bir parçasıysa veya komutun dönüş durumu ! ile zıddına ayarlanmışsa, ERR sinyal kapanı çalıştırılmaz. Bunlar errexit seçeneği tarafından uyulan koşullarla aynıdır. sinyal RETURN ise argüman ile belirtilen komut çalıştırılır.
Kabuk girdilerinde yoksayılan sinyaller yakalanamaz ve sıfırlanamaz. Yoksayılmayıp yakalanan sinyallere alt süreç içinde oluşturuldukları zamanki özgün değerleri atanır.
Bir sinyal geçersiz bir sinyal belirtmedikçe yerleşiğin dönüş durumu sıfırdır.


[107] Bir betik çalışırken klavyeden ^C tuşladığınızda durmamasını isterseniz aşağıdaki gibi bir programcığı betiğin başına yerleştirebilirsiniz (fare kapanı kurmak gibi sinyal kapanı kuruyoruz):
# Ctrl + C tuşlandığında gösterilecek ileti
trap 'echo "Control-C iptal edildi."' SIGINT
[108]
# Hiçbir ileti göstermeden de ^C iptal edilebilir
trap '' SIGINT
[109] ^C kesmesini tekrar etkin kılmak isterseniz:
trap SIGINT
yeterlidir.
Önceki Üst Ana Başlık Sonraki
times Yerleşiği Başlangıç umask Yerleşiği
Bir Linux Kitaplığı Sayfası