ºñ·Ï º» ½©ÀÇ ¼Ò½º Äڵ带 µé¿©´Ù º¸´Â°Ô ¾à°£ÀÇ µµ¿òÀÌ µÉ Áö´Â ¸ô¶óµµ ±× ¹®¹ýÀº ¾Æ¹«µµ ¾ËÁö ¸øÇÑ´Ù. | ||
--Tom Duff |
º¸Åë read ¹®(예 3-42 Âü°í)¿¡ ÀÇÇØ¼ »ç¿ëÀÚ°¡ ÀÔ·ÂÀ» ³Ö¾î¾ß ÇÏ´Â ½ºÅ©¸³Æ®¸¦ »óÈ£ ´ëÈ(interactive) ½ºÅ©¸³Æ®¶ó°í Á¤ÀÇÇսôÙ. "½ÇÁ¦ ¼¼°è"¿¡¼´Â À̰ͺ¸´Ù Á¶±Ý ´õ º¹ÀâÇØ¼ »óÈ£ ´ëÈ ½©¿¡ ´ëÇÑ Çü½ÄÀûÀÎ ¸í¼¼(Ramey¿Í Fox¿¡ µû¸¥)´Â º¹ÀâÇϰí È¥¶õ½º·´½À´Ï´Ù. Áö±Ý ´çÀåÀº, »ç¿ëÀÚ°¡ ÄܼÖÀ̳ª ÇÑÅҵ¼ ½ÇÇà½ÃŲ tty¿¡ ÇÑÁ¤µÈ ½ºÅ©¸³Æ®¸¦ »óÈ£ ´ëÈ ½ºÅ©¸³Æ®¶ó°í ¹Þ¾Æ µéÀԽôÙ.
ÃʱâÈ¿Í ½Ã½ºÅÛ ±¸µ¿(startup) ½ºÅ©¸³Æ®´Â ¹Ýµå½Ã ºñ »óÈ£ ´ëÈ(non-interactive) ½ºÅ©¸³Æ®¿©¾ß ÇÕ´Ï´Ù. ¿Ö³ÄÇϸé À̵éÀº »ç¶÷ÀÇ °³ÀÔ¾øÀÌ µ¹¾Æ¾ß Çϱ⠶§¹®ÀÔ´Ï´Ù. ¸¹Àº ¼öÀÇ °ü¸®¿ëÀ̳ª ½Ã½ºÅÛ À¯Áö¿ë ½ºÅ©¸³Æ®µéÀº ¿ª½Ã ºñ »óÈ£ ´ëÈ ½ºÅ©¸³Æ®ÀÔ´Ï´Ù. Ç×»ó °°°í ¹Ýº¹ÀûÀÎ ÀÛ¾÷ÀÇ ÀÚµ¿È¿¡´Â ºñ »óÈ£ ´ëÈ ½ºÅ©¸³Æ®°¡ ÇÊ¿äÇÕ´Ï´Ù.
ºñ »óÈ£ ´ëÈ ½ºÅ©¸³Æ®´Â ¹é±×¶ó¿îµå·Î µ¹ ¼ö ÀÖÁö¸¸ »óÈ£ ´ëÈ ½ºÅ©¸³Æ®´Â °áÄÚ ¹ÞÀ» ¼ö ¾ø´Â »ç¿ëÀÚ ÀÔ·ÂÀ» ±â´Ù¸®¸é¼ ¸ØÃç ÀÖ°Ô µË´Ï´Ù. ÀÌ·± °ï¶õÇÑ »óȲ¿¡ ´ëÇØ¼´Â expect ½ºÅ©¸³Æ®³ª ½ºÅ©¸³Æ®¿¡ Æ÷ÇÔµÈ here document (3.24절 Âü°í)¸¦ »ç¿ëÇØ¼ ¹é±×¶ó¿îµå·Î µµ´Â »óÈ£ ´ëÈ ½ºÅ©¸³Æ®¿¡ ÀÔ·ÂÀ» ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. °¡Àå °£´ÜÇÑ °æ¿ì·Î´Â read ¹®¿¡ ÀÔ·Â ÀçÁöÇâÀ» ½á¼ ÆÄÀÏ¿¡¼ ÀÔ·ÂÀ» ¹Þµµ·Ï ÇÏ´Â °ÍÀÔ´Ï´Ù(read variable <file). ÀÌ·± ƯÁ¤ÇÑ ¸î °¡Áö ÇØ°áÃ¥ ´öºÐ¿¡ Æò¹üÇÑ ¿ëµµÀÇ ½ºÅ©¸³Æ®µéÀ» »óÈ£ ´ëÈ ¸ðµå³ª ºñ »óÈ£ ´ëÈ ¸ðµå ¾ç ÂÊ¿¡¼ µ¹ ¼ö ÀÖ°Ô ÇÒ ¼ö ÀÖ½À´Ï´Ù.
¸¸¾à¿¡ ½ºÅ©¸³Æ®°¡ ÇöÀç »óÈ£ ´ëÈ ¸ðµå¿¡¼ µ¹°í ÀÖ´ÂÁö ¾Æ´ÑÁö´Â ´Ü¼øÈ÷ prompt º¯¼öÀÎ $PS1ÀÇ Á¸Àç ¿©ºÎ·Î ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù(»ç¿ëÀÚ°¡ ÀÔ·ÂÀ» ÇÒ Â÷·Ê(being prompted)¶ó¸é ½ºÅ©¸³Æ®´Â ÇÁ·ÒÇÁÆ®(prompt)¸¦ Ç¥½ÃÇØ¾ß Çϱ⠶§¹®ÀÔ´Ï´Ù).
if [ -z $PS1 ] # ÇÁ·ÒÇÁÆ®°¡ ¾ø´Ù? then # ºñ »óÈ£ ´ëÈ(non-interactive) ¸ðµå ... else # »óÈ£ ´ëÈ(interactive) ¸ðµå ... fi |
case $- in *i*) # »óÈ£ ´ëÈ(interactive script) ½ºÅ©¸³Æ® ;; *) # ºñ »óÈ£ ´ëÈ(non-interactive) ½ºÅ©¸³Æ® ;; # (1993³â "UNIX F.A.Q."¿¡¼ ¹ßÃé) |
참고: i ¿É¼ÇÀ¸·Î ½ÇÇà½ÃŰ°Å³ª ½ºÅ©¸³Æ® Çì´õ¿¡ #!/bin/bash -i¸¦ ³Ö¾î °Á¦·Î »óÈ£ ´ëÈ ¸ðµå·Î µ¹°Ô ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ·± ¹æ¹ýÀ» ¾µ ¶§´Â Á¶½ÉÇØ¾ß Çϴµ¥ ½ºÅ©¸³Æ®°¡ ¾û¶×ÇÏ°Ô µ¿ÀÛÇϰųª ¿¡·¯°¡ ¾ø´Â °÷¿¡¼ ¿¡·¯ ¸Þ¼¼Áö¸¦ »Ñ¸± ¼ö ÀÖ½À´Ï´Ù.
´ëºÎºÐÀÇ ½© ½ºÅ©¸³Æ®´Â º°·Î º¹ÀâÇÏÁö ¾ÊÀº ¹®Á¦¿¡ ´ëÇØ °£´ÜÇÑ ÇØ°áÃ¥À» °®°í ÀÖ½À´Ï´Ù. ÀÌ·± °æ¿ì¿¡´Â ¼Óµµ¸¦ À§ÇÑ ÃÖÀûÈ´Â À̽´°¡ µÇÁö ¾Ê½À´Ï´Ù. ÇÏÁö¸¸ ¾ÆÁÖ Áß¿äÇÑ ÀÛ¾÷À» ¼öÇàÇÏ´Â ½ºÅ©¸³Æ®Àε¥ µ¿ÀÛÀº Àß ÇÏÁö¸¸ ¼Óµµ°¡ ³Ê¹« ´À¸° °æ¿ì¸¦ »ý°¢ÇØ º¾½Ã´Ù. ÄÄÆÄÀÏ ¾ð¾î·Î ´Ù½Ã ÀÛ¼ºÇÏ´Â °ÍÀº º°·Î ÁÁÀº »ý°¢ÀÌ ¾Æ´Ò °ÍÀÔ´Ï´Ù. °¡Àå °£´ÜÇÑ ¹æ¹ýÀº ¼Óµµ¸¦ ¶³¾î¶ß¸®´Â ºÎºÐ¸¸À» ´Ù½Ã ÀÛ¼ºÇÏ´Â °ÍÀÔ´Ï´Ù. ÄÚµå ÃÖÀûÈÀÇ À̷еéÀ» ÀÌ ÃʶóÇÑ ½© ½ºÅ©¸³Æ®¿¡µµ Àû¿ëÇÒ ¼ö°¡ ÀÖÀ»±î¿ä?
·çÇÁ¹®µéÀ» »ìÆì º¸¼¼¿ä. ¹Ýº¹ÀûÀÎ ¿¬»êµéÀº ½Ã°£À» ¸¹ÀÌ Àâ¾Æ ¸Ô½À´Ï´Ù. time³ª times¸¦ ½á¼ °è»êÀ» ¸¹ÀÌ ÇÏ´Â ¸í·É¾îµéÀÇ ½Ã°£À» Àç º¸±â ¹Ù¶ø´Ï´Ù. ¾Æ´Ï¸é ½Ã°£¿¡ ¹Î°¨ÇÑ ºÎºÐÀ» C³ª ¾î¼Àºí·¯·Î ´Ù½Ã Â¥´Â °Íµµ °í·ÁÇØ º¸±â ¹Ù¶ø´Ï´Ù.
ÆÄÀÏ I/O¸¦ ÃÖ¼ÒÈ Çϼ¼¿ä. bash´Â ÆÄÀÏÀ» ´Ù·ç´Âµ¥ Ưº°È÷ È¿°úÀûÀÌÁö ¾Ê±â ¶§¹®¿¡ awk³ª PerlµîÀ¸·Î ÀÌ·± ºÎºÐÀ» ´ëü ÇÏ´Â °Íµµ ÁÁÀº ¹æ¹ýÀÔ´Ï´Ù.
±¸Á¶ÀûÀÌ°í ³í¸®ÀûÀÎ ½ºÅ©¸³Æ®°¡ µÇµµ·Ï ¸¸µå¼¼¿ä. ÀÌ·¸°Ô ÇØ¾ß ³ªÁß¿¡ ÇÊ¿äÇÒ ¶§ ´Ù½Ã ÀÛ¼ºÇϰųª ´õ °ÈµÈ ÇüÅ·Πº¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù. °í±Þ ¾ð¾îµé¿¡ Àû¿ëÇÒ ¼ö ÀÖ´Â ¸î¸î ÃÖÀûÈ ±â¹ýµéÀº ½ºÅ©¸³Æ®¿¡ Àû¿ë °¡´ÉÇÕ´Ï´Ù¸¸ ¿¹¸¦ µé¾î ·çÇÁ unrolling °°Àº °ÍµéÀº °ÅÀÇ ¹«ÀǹÌÇÕ´Ï´Ù. ¹«¾ùº¸´Ùµµ »ó½ÄÀûÀÎ ¼±¿¡¼ »ç¿ëÇÏ¸é µÇ°Ú½À´Ï´Ù.
¾î¶² »ç¿ëÀÚ°¡ ¾î¶² ƯÁ¤ÇÑ ¼¼¼ÇÀ̳ª ¾ó¸¶ÀÌ»óÀÇ ¼¼¼Çµ¿¾È ½ºÅ©¸³Æ®¸¦ µ¹·È´ÂÁö¸¦ º¸°í ½Í´Ù¸é °¢ ½ºÅ©¸³Æ®¸¶´Ù ´ÙÀ½ ÁÙµéÀ» ³Ö¾î ÁÖ¸é µË´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ½ºÅ©¸³Æ® À̸§°ú ½ÇÇà ½Ã°£ÀÇ ±â·ÏµéÀÌ ÇÑ ÆÄÀÏ¿¡ °è¼ÓÇØ¼ ³²¾Æ ÀÖ°Ô µË´Ï´Ù.
# ÀúÀåÇÒ ÆÄÀÏÀÇ ³¡¿¡ °è¼ÓÇØ¼ µ¡ºÙ¿©Áü(>>). date>> $SAVE_FILE # ³¯Â¥¿Í ½Ã°£ echo $0>> $SAVE_FILE # ½ºÅ©¸³Æ® À̸§ echo>> $SAVE_FILE # ºó ÁÙ ±¸ºÐÀÚ # ´ç¿¬ÇϰÔ, SAVE_FILEÀº ~/.bashrc¿¡¼ ȯ°æ º¯¼ö·Î Á¤Àǵǰí exportµÇ¾ß ÇÕ´Ï´Ù. # (~/.scripts-run °°Àº À̸§À¸·Î) |
½© ½ºÅ©¸³Æ®´Â TclÀ̳ª wish, ȤÀº Makefile °°Àº ´Ù¸¥ ½© ½ºÅ©¸³Æ®¿¡¼ ³»Àå ¸í·É¾îó·³ ¾²ÀÏ ¼ö ÀÖ½À´Ï´Ù. C ÇÁ·Î±×·¥¿¡¼ system()À» ½á¼ ¿ÜºÎ ½© ¸í·É¾î¸¦ ºÎ¸£´Â °Íó·³ ½ºÅ©¸³Æ®¸¦ ºÎ¸¦ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ºÎ¸£°ÚÁÒ. system("script_name");.
¿©·¯ºÐÀÌ ÀÚÁÖ ¾²°í À¯¿ëÇÏ´Ù ½ÍÀº Á¤ÀǵéÀ̳ª ÇÔ¼öµéÀº Çϳª·Î ¸ð¾Æ¼ ÇÑ ÆÄÀÏ¿¡ µÎ°í ´Ù¸¥ ½ºÅ©¸³Æ®¿¡¼ ÀÌ ÆÄÀÏÀ» "Á¡" (.)À̳ª source ¸í·É¾î(3.2절 Âü°í)·Î "Æ÷ÇÔ"ÇØ¼ ¾²µµ·Ï Çϼ¼¿ä.
½© ½ºÅ©¸³Æ®¿¡¼ X À©µµ¿ì À§Á¬À» ºÎ¸¦ ¼ö ÀÖ´Ù¸é ¾ÆÁÖ ¸ÚÁö°ÚÁÒ. ±×·¸°Ô ÇÒ ¼ö ÀÖ´Â ÆÐŰÁö°¡ ½ÇÁ¦·Î ¸î °³ ÀÖ½À´Ï´Ù. Xscript¿Í Xmenu°¡ ±×°ÍÀε¥, °ÅÀÇ ¾²ÀÌÁö ¾Ê´Â °Í °°½À´Ï´Ù. À§Á¬À» ¸¸µé ¼ö ÀÖ´Â ½ºÅ©¸³Æ®¸¦ ²Þ ²Û´Ù¸é wish(Tcl¿¡¼ ³ª¿ÔÁÒ)³ª PerlTk¸¦ ½á º¸±æ ¹Ù¶ø´Ï´Ù.