¸í·É¾î ´ëÄ¡¸¦ ¸·±âÀ§ÇØ ÀÛÀº µû¿òÇ¥ »ç¿ëÇÑ ¿¹:
#!/bin/sh trap 'echo `pwd` >>$HOME/errdir' 2 3 15 for i in /bin /usr/bin /usr/any/bin do cd $i some series of commands in the directory $i done
ÀÌ ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÏ´Ù°¡, ÀÎÅÍ·´Æ®(2, 3, 15 ½Ã±×³¯ÀÌ º¸³»Á®¼ ½ºÅ©¸³Æ®°¡ Á¾·áµÇ´Â °Í)½Ã۸é, ±× ´ç½Ã ÀÛ¾÷ µð·ºÅ丮 À̸§ÀÌ errdir ÆÄÀÏ¿¡ ±â·ÏµÉ °ÍÀÔ´Ï´Ù. ¸¸¾à À̶§, ÀÛÀº µû¿òÇ¥ ´ë½Å¿¡ ´ÙÀ½°ú °°ÀÌ Å«µû¿òÇ¥¸¦ »ç¿ëÇÏ°Ô µÇ¸é ¾î¶»°Ô µÉ±î¿ä?
trap "echo `pwd` >errdir" 2 3 15
ÀÌ·¸µÇ¸é, errdir ÆÄÀÏ¿¡´Â ÀÌ ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÑ ±× ´ç½ÃÀÇ ÀÛ¾÷ µð·ºÅ丮°¡ ±â·Ï µÉ °ÍÀÔ´Ï´Ù. ¿Ö³ÄÇϸé, Å«µû¿òÇ¥·Î ¹°Ü ÀÖÀ» °æ¿ì¿¡´Â, ½© ½ºÅ©¸³Æ®´Â, pwd ¸í·ÉÀÌ Ã³À½À¸·Î ÀÐÇôÁö¸é ¹Ù·Î ±× °á°ú·Î ´ëÄ¡ÇØ ¹ö¸®´Â ÀÛ¾÷À» ÇØ¹ö¸®±â ¶§¹®ÀÔ´Ï´Ù.
ÀÎÆ®·´Æ® ¹ß»ý½Ã, ÀÓ½ÃÆÄÀÏ Áö¿ì±â:
#!/bin/sh temp=/tmp/file.$$ trap 'rm $temp; exit' 0 1 2 3 15 ls > $temp .....
½© ½ºÅ©¸³Æ®°¡ ½ÇÇ൵Áß, ÁöÁ¤ÇÑ ½Ã±×³¯ÀÌ °¨ÁöµÇ¸é, rm $temp; exit ºÎºÐÀ» ½ÇÇàÇÒ °ÍÀÔ´Ï´Ù. exit ¸í·ÉÀº ´õ ³²¾Æ ÀÖ´Â ºÎºÐÀÌ ÀÖ°Ç ¸»°Ç °£¿¡ ¹«Á¶°Ç ½© ½ºÅ©¸³Æ® ÀÚü¸¦ Á¾·áÇÏÁö¿ä.
trap ¸í·É »ç¿ë ÈÄ¿¡ ¸í·Éµé ó¸®Çϱâ:
#!/bin/sh # read and process commands dir=`pwd` for i in * do if test -d $dir/$i then cd $dir/$i while echo ''$i:'' trap exit 2 # trap ^C read x do trap ' ' 2 # ignore interrupts eval $x done fi done
À ½ºÅ©¸³Æ®ÀÇ °æ¿ì´Â trap ¸í·ÉÀ» »ç¿ëÇÑ µÚ¿¡ ´Ù¸¥ ¸í·ÉµéÀ» ¾î¶»°Ô ó¸®ÇÏ´Â Áö¸¦ º¸¿©ÁÝ´Ï´Ù. »ç¿ëÀÚÀÇ ÀÔ·ÂÀ» ±â´Ù¸®´Â read ¸í·É ºÎºÐ¿¡¼, ^C ¹®ÀÚ°¡ °¨ÁöµÇ¸é ½ºÅ©¸³Æ®¸¦ ¸¶Ä¡°ÚÁö¸¸, ±×·¸Áö ¾Ê´Ù¸é, ³ª¸ÓÁö ÀÛ¾÷À» °è¼ÓÇÕ´Ï´Ù. ´ÙÀ½ºÎºÐÀÇ trap ¸í·É¿¡¼´Â, ¸í·É¸ñ·Ï ºÎºÐ¿¡¼ ¾Æ¹«·± ¸í·ÉÀ» ÁöÁ¤ÇÏÁö ¾ÊÀº µû¿òÇ¥°¡ »ç¿ëµÇ¾î, °á±¹ ½©¿¡ ÀÇÇØ¼, ½Ã±×³¯ÀÌ ¹«½ÃµË´Ï´Ù.