ÀÎÆ®·´Æ® ó¸® º¸±â

¸í·É¾î ´ëÄ¡¸¦ ¸·±âÀ§ÇØ ÀÛÀº µû¿òÇ¥ »ç¿ëÇÑ ¿¹:

   #!/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 ¸í·É¿¡¼­´Â, ¸í·É¸ñ·Ï ºÎºÐ¿¡¼­ ¾Æ¹«·± ¸í·ÉÀ» ÁöÁ¤ÇÏÁö ¾ÊÀº µû¿òÇ¥°¡ »ç¿ëµÇ¾î, °á±¹ ½©¿¡ ÀÇÇØ¼­, ½Ã±×³¯ÀÌ ¹«½ÃµË´Ï´Ù.


[Â÷·Ê] [ã±â] [»öÀÎ]