Shell Programming Tutorial
½© ÇÁ·Î±×·¡¹Ö °ÁÂ
1. º¯¼ö ¶
1.1. ȯ°æº¯¼ö ¶½©À» ±âµ¿ÇÏ°í³ª¸é ±âº»ÀûÀ¸·Î ¼ÂÆõǾîÀÖ´Â º¯¼öµéÀÌ´Ù. À¯´Ð½º/¸®´ª½º¿¡´Â ¸¹Àº ȯ°æº¯¼öµéÀÌ ÀÖ°í ÇÊ¿äÇÑ°æ¿ì ÀÌ º¯¼öµéÀ» ¸¶Ä¡ ÀϹݺ¯¼öó·³ °ªÀ» ¾ò¾î¿À°Å³ª ¼ÂÆÃÇÒ ¼ö ÀÖ´Ù. ¿©±â¼´Â ½©°ú Á÷Á¢ÀûÀÎ °ü·ÃÀÌ Àִ°͸¸ ¼³¸íÇÑ´Ù.
1.2. ÀÎÀÚ º¯¼ö ¶½©½ºÅ©¸³Æ®¿¡ ÀÎÀÚ¸¦ ³Ñ°ÜÁÙ¶§ ±× ÀÎÀڵ鿡 ´ëÇÑ Á¤º¸¸¦ °¡Áö°í ÀÖ´Â º¯¼öµé.
2. ÀϹݺ¯¼ö ¶ÀϹݺ¯¼ö¿¡ Ưº°ÇÑ Á¦¾àÀº ¾ø´Ù. ´Ü ´ë¼Ò¹®ÀÚ ±¸ºÐ¸¸ Á¤È®ÇÏ°Ô ÇØÁÖ¸é µÈ´Ù.
¿¹Á¦
#!/bin/sh
echo "This Script Executable File : $0" echo "Argument Count : $#" echo "Process ID : $$" echo "Argument List \$* : $*" echo "Argument List \$@ : $@" echo "Argument 1 : $1" echo "Argument 2 : $2" echo "Argument 3 : $3" echo "Argument 4 : $4" $chmod 755 test1 $./test1 a1 a2 a3 a4 This Script Executable File : ./test1 Argument Count : 4 Process ID : 905 Argument List $* : a1 a2 a3 a4 Argument List $@ : a1 a2 a3 a4 Argument 1 : a1 Argument 2 : a2 Argument 3 : a3 Argument 4 : a4 2.1. ¿¬»ê ¶º¯¼öÀÇ »ê¼ú ¿¬»êÀº »ý°¢ÇÏ´Â °Íó·³ ½±Áö ¾Ê´Ù. À§¿¡¼ ¾ð±ÞÇßµíÀÌ º¯¼ö¿¡´Â ¸ðµç °ÍÀÌ ¹®ÀÚ¿·Î ÀúÀåµÇ±â ¶§¹®¿¡ ¿¬»êÀÌ ºÒ°¡´ÉÇÏ´Ù. ¿¬»êÀ» À§Çؼ´Â Á» º¹ÀâÇÑ ÀýÂ÷¸¦ °ÅÃÄ¾ß ÇÑ´Ù.
º¯¼ö = $((»ê¼ú½Ä)) $1 , $a ¿Í °°Àº) µµ µé¾î°¥ ¼ö ÀÖ´Ù. »ê¼ú½Ä ³»¿¡ ¼ýÀÚ°¡ ¾Æ´Ñ ¹®ÀÚ¿, ¶Ç´Â ¹®ÀÚ¿ÀÌ ´ã°ÜÀÖ´Â º¯¼ö°¡ µé¾î°¡¸é ±×°ÍµéÀº °è»ê¿¡¼ Á¦¿ÜµÈ´Ù. (Á¤È®È÷ ¸»Çϸé 0 À¸·Î °£ÁÖµÇ¾î ¿¬»êÀÌ ÀÌ·ç¾î ÁöÁö ¾Ê´Â´Ù.)
2.2. ¸Å°³º¯¼ö È®Àå ¶¸Å°³º¯¼ö È®ÀåÀ̶õ º¯¼öÀÇ °ªÀ» ¹®ÀÚ¿ µîÀ¸·Î ´ëüÇÏ´Â °ÍÀ» ¸»ÇÑ´Ù. ´Ü¼øÇÑ ´ëü»Ó ¾Æ´Ï¶ó º¯¼ö³»ÀÇ ¹®ÀÚ¿À» Á¶ÀÛÇÏ¿© ¿øÇÏ´Â ¹®ÀÚ¿¸¸À» ÃßÃâÇÒ ¼öµµ ÀÖ´Ù.
Çü½Ä:
1 #!/bin/sh 2 3 p="/usr/X11R6/bin/startx" 4 5 unset p 6 a=${p:-"Variable p Not found"} 7 echo $a 8 9 p="/usr/X11R6/bin/startx" 10 a=${p:-"Variable parm Not found"} 11 echo $a 12 13 a=${#p} 14 echo $a 15 16 a=${p%/*} 17 echo $a 18 19 a=${p%%/*} 20 echo $a 21 22 a=${p#*/} 23 echo $a 24 25 a=${p##*/} 26 echo $a 27 Variable p Not found /usr/X11R6/bin/startx 21 /usr/X11R6/bin usr/X11R6/bin/startx startx
3. Á¶°Ç ÆÇ´Ü ¶½© ½ºÅ©¸³Æ®¿¡¼ Á¶°ÇÆÇ´ÜÀº if ¿Í test ¸í·ÉÀ» È¥ÇÕÇÏ¿© »ç¿ëÇÑ´Ù. ÀϹÝÀûÀÎ ¿¹´Â ´ÙÀ½°ú °°´Ù.
if test -f test1
then ... fi -f ´Â ÁÖ¾îÁø ÀÎÀÚ°¡ ÀÏ¹Ý ÆÄÀÏÀÏ ¶§ ÂüÀÌ µÈ´Ù.
test ¸í·ÉÀº
[] ·Î ´ëüµÉ ¼ö ÀÖ´Ù.
if [ -f test1 ]
then ... fi if [ -f test1 ]; then ... fi 3.1.2. »ê¼ú ºñ±³ ¶
3.1.3. ÆÄÀÏ Á¶°Ç ¶
3.2.3. Çü½Ä 3 (if-elif ¹®) ¶Çü½Ä:
if [ Á¶°Ç ] then ¹®Àå1 ¹®Àå2 elif ¹®Àå3 ¹®Àå4 else ¹®Àå5 ¹®Àå6 fi 3.3. case ±¸¹® ¶'ÆÐÅÏ'¿¡´Â * ¹®ÀÚ, Áï ¿ÍÀϵåÄ«µå¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
Çü½Ä:
case º¯¼ö in ÆÐÅÏ [ | ÆÐÅÏ ] ... ) ¹®Àå ;; ÆÐÅÏ [ | ÆÐÅÏ ] ... ) ¹®Àå ;; .... * ) ¹®Àå ;; esac 3.4. ¸ñ·Ï ¶¿©·¯ ¸í·ÉÀ» ½ÇÇàÇÒ¶§ ¾ÕÀÇ ¸í·ÉÀÇ °á°ú¿¡ ÀÇÇؼ ´ÙÀ½ÇൿÀÌ °áÁ¤µÇ¾î¾ß ÇÒ °æ¿ì°¡ ÀÖ´Ù. ÀÌ·±°æ¿ì¿¡ AND³ª ORÁ¶°ÇÀ» »ç¿ëÇؼ Çѹø¿¡ ó¸®ÇÒ ¼ö ÀÖ´Ù. ÀÌ°ÍÀº ½© ½ºÅ©¸³Æ® »Ó ¾Æ´Ï¶ó ¸í·ÉÇà¿¡¼µµ »ç¿ë °¡´ÉÇÏ´Ù. ¹°·Ð if ¹®À» ÀÌ¿ëÇؼ ¹Ýȯ°ªÀ» °Ë»çÇÏ¿© ó¸®ÇÒ ¼ö ÀÖÁö¸¸ ¹®ÀåÀÌ ±æ¾îÁö°í º¹ÀâÇØÁø´Ù.
3.4.1. AND ¸ñ·Ï ¶statment1 && statment2 && statmentN && ..... À§ÀÇ ¸í·ÉµéÀº °¢ ¸í·ÉÀÌ °ÅÁþÀÌ µÉ ¶§ ±îÁö ¸í·ÉÀ» ¼öÇàÇØ ³ª°£´Ù. ¼öÇà µµÁß °á°ú°¡ °ÅÁþÀÌ µÇ¸é ±×ÀÌÈÄÀÇ ¸í·ÉÀº ¼öÇàµÇÁö
3.4.2. OR ¸ñ·Ï ¶statment1 || statment2 || statmentN || ..... À§ÀÇ ¸í·ÉµéÀº °¢ ¸í·ÉÀÌ °ÅÁþÀÌ ³ª¿À´Â µ¿¾È °è¼ÓµÈ´Ù. Áï ÂüÀÌ ³ª¿À¸é ½ÇÇàÀ» ¸ØÃá´Ù.
3.4.3. AND¿Í OR¸ñ·ÏÀº È¥¿ëÀÌ °¡´ÉÇÏ´Ù. ¶[ Á¶°Ç ] && ¹®Àå1 || ¹®Àå2 À§ÀÇ ¿¹´Â Á¶°ÇÀÌ ÂüÀÌ¸é ¹®Àå1À» ¼öÇàÇÏ°í °ÅÁþÀÌ¸é ¹®Àå2¸¦ ¼öÇàÇÑ´Ù.
¶ÇÇÑ À§ÀÇ ¹®Àå1À̳ª ¹®Àå2¿¡¼ ¿©·¯°³ÀÇ ¹®ÀåÀ» ¼öÇàÇÏ°í ½ÍÀ» ¶§´Â {}¸¦ »ç¿ëÇÏ¸é µÈ´Ù.
[Á¶°Ç] && { ¹®Àå1 ¹®Àå2 ¹®Àå3 } || { ¹®Àå4 ¹®Àå5 ¹®Àå6 } 4.1. for ¶for ¹®Àº ÁöÁ¤µÈ ¹üÀ§¾È¿¡¼ ·çÇÁ¸¦ ¼öÇàÇÑ´Ù. ¹üÀ§´Â ¾î¶² ÁýÇÕµµ °¡´ÉÇÏ´Ù.
Çü½Ä:
for º¯¼ö in °ª1, °ª2, ... do ¹®Àå done ¸Å ·çÇÁ¸¦ µ¹¶§¸¶´Ù º¯¼öÀÇ °ªÀº in ÀÌÈÄÀÇ °ªÀ¸·Î ´ëüµÈ´Ù.
¿¹Á¦:
for str in "test1", "test2", "test3", "test4" do echo @str done Ãâ·Â:
test1 test2 test3 test4 °ª¿¡´Â ¿ÍÀϵå Ä«µå È®ÀåÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù.
for file in $(ls -a | grep "^\.") do echo "$file is Hidden File" done À§ ¿¹ÀÇ Ãâ·Â °á°ú´Â ÇöÀç µð·ºÅ丮¿¡¼ óÀ½ÀÌ "." À¸·Î½ÃÀÛÇÏ´Â ÆÄÀÏ(È÷µçÆÄÀÏ)¸¸À» Ãâ·ÂÇÑ´Ù.
for file in $(ls chap[345].txt); do echo "--- $file ---" >> Books.txt cat $file >> Books.txt done À§ÀÇ ¿¹´Â chap3.txt, chap4.txt, chap5.txt ÆÄÀÏÀ» Books.txt ¶ó´Â ÆÄÀÏ¿¡ ºÙ¿© ³Ö´Â´Ù.
´ÙÀ½ÀÇ ¿¹¸¦ º¸°í °á°ú¸¦ ¿¹ÃøÇغ¸ÀÚ.
echo "\$* output" for fvar in $* do echo $fvar done echo "\$@ output" for fvar in $@ do echo $fvar done 4.2. while ¶for ¸í·ÉÀÇ °æ¿ì´Â Ƚ¼ö¸¦ ÁöÁ¤Çؼ ·çÇÁ¸¦ ¼öÇàÇÏ´Â µ¥´Â ¹®Á¦°¡ ÀÖ´Ù. while ¹®Àº ½ÇÇà Ƚ¼ö°¡ ÁöÁ¤µÇÁö ¾Ê¾ÒÀ» ¶§ Æí¸®ÇÏ´Ù.
Çü½Ä:
while Á¶°Ç¹® do ¹®Àå done ¿¹Á¦¸¦ º¸ÀÚ. Æнº¿öµå¸¦ ÀÔ·Â¹Þ°í ¸Â´ÂÁö È®ÀÎÇÏ´Â ÇÁ·Î±×·¥ÀÌ´Ù.
echo "Enter Password : " read password1 echo "Retype Password : " read password2 while [ "$password1" != "$password2" ] do echo "Password mismatch Try again " echo "Retype Password : " read password2 done echo "OK Password Match complete" ¾î¶»°Ô µ¿ÀÛÇϴ°¡ ?
4.3. until ¶untilÀº while¹®°ú µ¿ÀÏÇÑ È¿°ú¸¦ ³»Áö¸¸ Á¶°ÇÀÌ ¹Ý´ëÀÌ´Ù. Áï, while¹®Àº Á¶°ÇÀÌ ÂüÀϵ¿¾È ·çÇÁ¸¦ ¼öÇàÇÏÁö¸¸ untilÀº Á¶°ÇÀÌ °ÅÁþÀÏ µ¿¾È ·çÇÁ¸¦ ¼öÇàÇÑ´Ù.
Çü½Ä:
until Á¶°Ç¹® do ¹®Àå done ´ÙÀ½ ¿¹¸¦ º¸ÀÚ. ÀÌ ¿¹´Â ÁöÁ¤ÇÑ À¯Àú°¡ ·Î±×ÀÎÇÏ¸é ¾Ë·ÁÁØ´Ù.
#!/bin/sh until who | grep "$1" > /dev/null do sleep 10 done echo "User $1 just logged in ^_^" 4.4. select ¶select¹®Àº ¿øÇÏ´Â ¸®½ºÆ®¸¦ Ãâ·ÂÇÏ°í ±× Áß ¼±ÅÃµÈ °ÍÀ» µ¹·ÁÁÖ´Â ±¸¹®ÀÌ´Ù. ÁÖÀÇÇÒ Á¡Àº selectÀÇ ·çÇÁ ³»¿¡¼´Â ÀÚµ¿ÀûÀ¸·Î ·çÇÁ¸¦ ¹þ¾î³¯ ¼ö ¾ø´Ù. ¹Ýµå½Ã break¹®À» »ç¿ëÇؼ ·çÇÁ¸¦ ¹þ¾î³ª¾ß ÇÑ´Ù.
¿¹: °£´ÜÇÑ ÄûÁî
#!/bin/sh echo "´ÙÀ½Áß ½ºÅ©¸³Æ®¾ð¾î ÇÁ·Î±×·¡¹Ö¿¡ ¼ÓÇÏ´Â °ÍÀº ?" select var in "½© ÇÁ·Î±×·¡¹Ö" "C ÇÁ·Î±×·¡¹Ö" "ÀÚ¹Ù ÇÁ·Î±×·¡¹Ö" "Exit" do if [ "$var" = "½© ÇÁ·Î±×·¡¹Ö" ] then echo "Á¤´äÀÔ´Ï´Ù." exit 0 elif [ "$var" = "Exit" ] then echo "Á¾·áÇÕ´Ï´Ù." exit 1 else echo "$var À» ¼±ÅÃÇϼ̽À´Ï´Ù. ¿À´äÀÔ´Ï´Ù." echo "´ÙÀ½Áß ½ºÅ©¸³Æ®¾ð¾î ÇÁ·Î±×·¡¹Ö¿¡ ¼ÓÇÏ´Â °ÍÀº ?" fi done 5. ÇÔ¼ö ¶½© ½ºÅ©¸³Æ® ³»ºÎ¿¡ ¶Ç´Â ´Ù¸¥ ½ºÅ©¸³Æ®ÆÄÀÏ¿¡ ÇÔ¼ö¸¦ Á¤ÀÇÇØ ³õ°í »ç¿ëÇÒ ¼ö ÀÖ´Ù. ÇÔ¼ö¸¦ »ç¿ëÇϸé Äڵ带 ÃÖÀûÈ ÇÒ ¼ö ÀÖ°í, ÄÚµùÀÌ °£°áÇØÁö¸ç,Àç»ç¿ëÀÌ °¡´ÉÇÏ´Ù. ±×·¯³ª ´Ù¸¥ ½ºÅ©¸³Æ® ÆÄÀÏÀ» È£ÃâÇؼ ÇÔ¼ö¸¦ ½ÇÇàÇÒ °æ¿ì, °¡´ÉÀº ÇÏÁö¸¸ ½ºÅ©¸³Æ®ÀÇ ½ÇÇà½Ã°£ÀÌ ±æ¾îÁö°í, ÇÔ¼öÀÇ °á°ú¸¦ Àü´ÞÇÏ´Â °ÍÀÌ ±î´Ù·Ó±â ¶§¹®¿¡ °¡±ÞÀûÀÌ¸é ¿ÜºÎÆÄÀÏÀÇ ÇÔ¼ö´Â ¾È¾²´Â °ÍÀÌ ÁÁ´Ù.
Çü½Ä:
ÇÔ¼ö¸í () { ¹®Àå return °ª } »ç¿ë
ÇÔ¼ö¸í ÀÎÀÚ1, ÀÎÀÚ2, ... ÇÔ¼ö´Â µ¶¸³ÀûÀ¸·Î
$# , $* , $0 µîÀÇ ÀÎÀÚ º¯¼ö¸¦ »ç¿ëÇÑ´Ù. Áï ÇÔ¼ö³»ÀÇ $# °ú º»Ã¼ÀÇ $# Àº ´Ù¸¦ ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù.
´ÙÀ½ÀÇ ¿¹¸¦ º¸ÀÚ
#!/bin/sh func() { echo ------ this is func -------- echo "This Script Executable File : $0" echo "Argument Count : $#" echo "Process ID : $$" echo "Argument List \$* : $*" echo "Argument List \$@ : $@" echo "Argument 1 : $1" echo "Argument 2 : $2" echo "Argument 3 : $3" } echo ------ this is main -------- echo "This Script Executable File : $0" echo "Argument Count : $#" echo "Process ID : $$" echo "Argument List \$* : $*" echo "Argument List \$@ : $@" echo "Argument 1 : $1" echo "Argument 2 : $2" echo "Argument 3 : $3" echo "Argument 4 : $4" func aa bb cc º»Ã¼¿Í ÇÔ¼ö¿¡¼ µ¿ÀÏÇÑ º¯¼ö¸¦ º¸¿©ÁÖÁö¸¸ °ªÀº Ʋ¸°´Ù´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù.
ÇÔ¼ö¿¡¼ °ªÀ» ¹ÝȯÇϱâ - ÇÔ¼ö¿¡¼ ¹Ýȯ°ªÀº ¹Ýµå½Ã Á¤¼ö°ª¸¸À» ¹ÝȯÇÒ ¼ö ÀÖ´Ù. ÀÌ °ªÀ» if µîÀ¸·Î Á¶°ÇÀ» ÆÇ´ÜÇؼ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ¹Ýȯ°ª Áß 0Àº ÂüÀ¸·Î ³ª¸ÓÁö ¼ýÀÚ´Â °ÅÁþÀ¸·Î ÆǺ°µÈ´Ù.
6. ¸í·É¾î ¶½©¿¡¼ ¾µ ¼ö ÀÖ´Â ¸í·É¾î´Â µÎ°¡Áö·Î ³ª´©¾îÁø´Ù. ¸í·É ÇÁ·ÒÇÁÆ® »ó¿¡¼ ½ÇÇà ½Ãų ¼ö ÀÖ´Â ¿ÜºÎ ¸í·É¾î¿Í ½© ³»ºÎ ¸í·ÉÀÌ´Ù. ³»ºÎ ¸í·ÉÀº º¸Åë ½© ³»ºÎ³ª ½© ±¸¹®»ó¿¡¼ ¾²ÀδÙ. ¿ÜºÎ¸í·ÉÀº ½©¿¡ °ü°è¾øÀÌ »ç¿ëÀÌ °¡´ÉÇÏ´Ù.
6.1. break ¶Á¦¾î¹®À̳ª Á¶°Ç¹®ÀÇ ·çÇÁ¸¦ ºüÁ®³ª°¥¶§ »ç¿ëÇÑ´Ù.
¿¹Á¦
while [ $a -eq 10 ] do if [ $a -eq 5 ]; then break fi done 6.2. continue ¶Á¦¾î¹®À̳ª Á¶°Ç¹®ÀÇ Ã³À½À¸·Î µ¹¾Æ°¡¼ ´Ù½Ã¼öÇàÇÑ´Ù.
¿¹Á¦
while [ $a -eq 10 ] do if [ $a -eq 5 ]; then continue fi done 6.4. . ¸í·É ¶. ¸í·ÉÀ» »ç¿ëÇϸé ÇöÀç ½©¿¡¼ ¸í·ÉÀ» ½ÇÇà½ÃŲ´Ù ±×·¯¹Ç·Î ½ÇÇàµÈ ¸í·ÉÀÇ °á°ú¸¦ º» ÇÁ·Î±×·¥¿¡¼ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
¿¹¸¦ µé¸é A ¶ó´Â ½ºÅ©¸³Æ®¿¡¼ B¶ó´Â ½ºÅ©¸³Æ®¸¦ ±×³É ½ÇÇàÇÒ °æ¿ì B¿¡¼ÀÇ º¯È(ȯ°æº¯¼ö µî)´Â A¿¡°Ô ¾Æ¹«·± ¿µÇâµµ ¹ÌÄ¡Áö ¾Ê´Â´Ù. ±×·¯³ª . ¸í·ÉÀ» »ç¿ëÇؼ ½ÇÇàÇϸé B¿¡¼ÀÇ º¯È°¡ A¿¡µµ ¿µÇâÀ» ¹ÌÄ£´Ù.
6.6. eval ¶ÀÎÀÚÀÇ ½ÇÁ¦ °ªÀ» ±¸Çϴµ¥ »ç¿ëÇÑ´Ù.
foo=10 x=foo y='$'$x echo $y ÀÌ ¿¹¸¦ ½ÇÇàÇØ º¸¸é $foo°¡ Ãâ·ÂµÈ´Ù
foo=10 x=foo eval y='$'$x echo $y ÀÌ ¿¹¿¡¼´Â $fooÀÇ °ª Áï 10 ÀÌ Ãâ·ÂµÈ´Ù. eval¸í·ÉÀº ¿øÇÏ´Â ¹®ÀÚ¿µéÀ» Á¶ÇÕÇؼ º¯¼ö¸¦ ¾×¼¼½º ÇÒ ¼ö ÀÖ´Ù.
6.10. expr ¶Ç¥Çö½ÄÀÇ °ªÀ» ±¸ÇÑ´Ù.
x=`expr 1 + 2`¿äÁòÀº exprº¸´Ù´Â $((°è»ê½Ä)) ±¸¹®À» ¸¹ÀÌ »ç¿ëÇÑ´Ù.
6.13. set ¶½© ³»ºÎ¿¡¼ ¸Å°³ ÀÎÀÚ¸¦ ¼³Á¤ÇÑ´Ù. setÀÇ ÀÎÀÚ·Î ¾²ÀÎ ¹®ÀÚ¿Àº °ø¹é¿¡ ÀÇÇØ
$1 ºÎÅÍ Â÷·Ê´ë·Î ´ëÀԵȴÙ.
¿¹Á¦
#!/bin/sh echo $# set $(ls) echo $# °á°ú´Â
0 22 ÀÌ´Ù. (22´Â ÇÊÀÚÀÇ ls °á°úÀÇ °¹¼öÀÌ´Ù.) ù¹ø° 0´Â ÀÌ ½ºÅ©¸³Æ®¿¡ Àμö°¡ ¾øÀ¸¹Ç·Î 0ÀÌ°í set $(ls) ¿¡ ÀÇÇؼ ÀμöÀÇ °¹¼ö°¡ 22°³·Î ´Ã¾ú´Ù.
6.14. shift ¶½©ÀÇ ÀÎÀÚ¸¦ ÇÑÀÚ¸®¾¿ ¾Æ·¡·Î(n -> 1 ·Î) À̵¿½ÃŲ´Ù.
¿¹Á¦
#!/bin/sh echo $1 shift echo $1 shift 5 echo $1 ½ÇÇà
#./myscript 1 2 3 4 5 6 7 8 9 0 1 2 7 6.15. trap ¶½©ÀÇ ½ÇÇ൵Áß ½Ã±×³ÎÀ» ó¸®ÇÏ´Â ½Ã±×³Î 󸮱⸦ ¸¸µå´Â ¿ªÇÒÀ» ÇÑ´Ù.
Çü½Ä:
trap command signal ½© ½ºÅ©¸³Æ®´Â À§¿¡¼ ¾Æ·¡·Î ½ÇÇàµÇ¹Ç·Î º¸È£ÇÏ·Á´Â ºÎºÐ ÀÌÀü¿¡ trap ¸í·ÉÀ» »ç¿ëÇØ¾ß ÇÑ´Ù. trap Á¶°ÇÀ» ±âº»À¸·Î »ç¿ëÇÏ·Á¸é ¸í·É¿¡ - ¸¦ ³ÖÀ¸¸é µÈ´Ù. ½ÅÈ£¸¦ ¹«½ÃÇÏ·Á¸é '' ºó ¹®ÀÚ¿À» ÁØ´Ù.
7. ¸í·É ½ÇÇà ¶¿ÜºÎ ¸í·ÉÀÇ ½ÇÇà °á°ú¸¦ º¯¼ö¿¡ Áý¾î³Ö¾î º¯¼öÀÇ °ªÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù.
Çü½Ä:
x = $(¸í·É) ÀÌ·¸°Ô º¯¼ö¿¡ °á°ú¸¦ ³ÖÀº ÈÄ¿¡´Â ÀÌ º¯¼ö¸¦ ÀϹݹ®ÀÚ¿·Î »ý°¢ÇÏ°í ¿øÇÏ´Â °¡°øÀ» Çؼ °á°ú¸¦ ¾ò¾î³¾ ¼ö ÀÖ´Ù. À§¿¡¼ º¸¾Ò´ø ¸Å°³º¯¼ö È®ÀåÀ̳ª set¸í·ÉÀ» ÀÌ¿ëÇؼ ¿øÇÏ´Â ºÎºÐÀ» ÃßÃâÇØ ³»¸é ±×¸¸ÀÌ´Ù.
8. ½© ½ºÅ©¸³Æ® ³»ºÎ¿¡¼ ¸í·É¿¡ ÀÔ·Â Àü´ÞÇϱâ (Here Documents) ¶ÀÌ ±â´ÉÀº ½© ³»ºÎ¿¡¼ ¸í·É¾î¿¡ ÀÔ·ÂÀ» Àü´ÞÇÏ´Â ¹æ¹ýÀÌ´Ù. Àü´ÞµÈ ÀÔ·ÂÀº ¸¶Ä¡ Å°º¸µå¿¡¼ ´·ÁÁø °Íó·³ ¹ÝÀÀÇÑ´Ù.
Çü½Ä:
¸í·É << Á¾·á¹®ÀÚ¿ ÀԷ°ª..... Á¾·á¹®ÀÚ¿ ¿¹Á¦: ÀÚµ¿À¸·Î ¸ÞÀÏÀ» º¸³»´Â ½ºÅ©¸³Æ®
#!/bin/sh mail $1 << myscript This is Header This is Body . myscript 9.1. ½© ¿É¼Ç ¶
9.2. set ¿É¼Ç ¶À§ÀÇ ½© ¿É¼ÇÀº ¾Æ·¡¿Í °°ÀÌ set ¿É¼ÇÀ¸·Îµµ ¼³Á¤ÇÒ ¼ö ÀÖ´Ù.
set -x ¸¦ ÀÌ¿ëÇÏ¿© ¼Õ½±°Ô ½ÇÇà°úÁ¤À» ÃßÀûÇÒ ¼ö ÀÖ´Ù. (Âü°í·Î set ¿É¼ÇÀ» Ãë¼ÒÇÏ·Á¸é set +x ¸¦ ÀÔ·ÂÇÏ¸é µÈ´Ù. ´Ù¸¥ ¿É¼Çµµ ¸¶Âù°¡Áö)
set -x for str in "test1" "test2" "test3" "test4" do echo $str done °á°ú
+ for str in '"test1"' '"test2"' '"test3"' '"test4"' + echo @str @str + for str in '"test1"' '"test2"' '"test3"' '"test4"' + echo @str @str + for str in '"test1"' '"test2"' '"test3"' '"test4"' + echo @str @str + for str in '"test1"' '"test2"' '"test3"' '"test4"' + echo @str @str |