¾î´À Á¤µµ Á¦ÇÑÀº ÀÖÁö¸¸ Bashµµ "½ÇÁ¦" ÇÁ·Î±×·¡¹Ö ¾ð¾îµéó·³ ÇÔ¼ö¸¦ Áö¿øÇÕ´Ï´Ù. ÇÔ¼ö¶õ ¼ºê·çƾÀ¸·Î, ¾î¶² µ¿ÀÛµéÀÌ ±¸ÇöµÈ ÄÚµå ºí·°À̰í, ƯÁ¤ÇÑ ÀÏÀ» ¼öÇàÇÏ´Â "ºí·¢ ¹Ú½º"ÀÔ´Ï´Ù. ¹Ýº¹ÀûÀÎ Äڵ峪 ¾à°£¸¸ ´Ù¸¥ ÀÏÀ» ¹Ýº¹ÇÏ´Â ÀÛ¾÷µéÀÌ ÀÖ´Ù¸é ÇÔ¼ö¸¦ ¾²µµ·Ï °í·ÁÇØ º¸´Â °ÍÀÌ ÁÁ½À´Ï´Ù.
function function_name {
command...
}
function_name () {
command...
}
µÎ ¹øÂ° ÇüÅ´ C ÇÁ·Î±×·¡¸Óµé¿¡°Ô ¾ÆÁÖ ¹Ý°¡¿ï °ÍÀÔ´Ï´Ù(¶ÇÇÑ ÀÌ ÇüŰ¡ ´õ À̽ļº ÀÖ½À´Ï´Ù).
C ÇÔ¼ö ¹®¹ý°ú ´õ¿í ºñ½ÁÇÏ°Ô ¿ÞÂÊ Áß°ýÈ£¸¦ ´ÙÀ½ ÁÙ¿¡ ³õ¾Æµµ µË´Ï´Ù.
function_name ()
{
command...
}
ÇÔ¼ö´Â °£´ÜÇÏ°Ô ÇÔ¼ö À̸§À» ºÒ·¯¼ ½ÇÇà½Ãų ¼ö ÀÖ½À´Ï´Ù.
¿¹ 23-1. °£´ÜÇÑ ÇÔ¼ö
#!/bin/bash
funky ()
{
echo "funky ÇÔ¼öÀÔ´Ï´Ù."
echo "funky ÇÔ¼ö¸¦ ºüÁ® ³ª°©´Ï´Ù."
} # ÇÔ¼ö°¡ ºÒ¸®±â Àü¿¡ ¼±¾ðµÅ ÀÖ¾î¾ß ÇÕ´Ï´Ù.
# ÀÌÁ¦ ÇÔ¼ö¸¦ ºÎ¸¨½Ã´Ù.
funky
exit 0 |
ÇÔ¼ö´Â ÇÔ¼ö°¡ ºÒ¸®±â Àü¿¡ Á¤ÀǵǾî¾ß µË´Ï´Ù. ¿¹¸¦ µé¾î C¿¡¼ ó·³ ÇÔ¼ö¸¦ ¹Ì¸® "¼±¾ð"ÇÏ´Â ¹æ¹ýÀº ¾ø½À´Ï´Ù.
# f1
# "f1"ÀÌ ¾ÆÁ÷ Á¤ÀǵÇÁö ¾Ê¾Ò±â ¶§¹®¿¡ ¿¡·¯ ¸Þ¼¼Áö°¡ ³ª¿É´Ï´Ù.
# ±×·¸Áö¸¸...
f1 ()
{
echo "\"f1\" ÇÔ¼ö¿¡¼ \"f2\" ÇÔ¼ö ºÎ¸£±â."
f2
}
f2 ()
{
echo "\"f2\" ÇÔ¼ö."
}
f1 # "f2" ÇÔ¼ö´Â Á¤ÀǵDZâ Àü¿¡ ÂüÁ¶µÇÁö¸¸ ½ÇÁ¦·Î´Â ¿©±â Àü¿¡´Â
# ºÒ¸®Áö ¾Ê±â ¶§¹®¿¡ °¡´ÉÇÕ´Ï´Ù.
# Thanks, S.C. |
ÇÔ¼ö ¾È¿¡¼ ´Ù¸¥ ÇÔ¼ö¸¦ Á¤ÀÇÇÏ´Â°Ô °¡´ÉÇϱä ÇÏÁö¸¸ ±×·¸°Ô ¾µ¸ð°¡ ÀÖÁø ¾Ê½À´Ï´Ù.
f1 ()
{
f2 () # ÁßøµÊ.
{
echo "ÇÔ¼ö \"f1\"¼ÓÀÇ ÇÔ¼ö \"f2\"."
}
}
# f2
# ¿¡·¯°¡ ³³´Ï´Ù.
f1 # "f1"ÀÌ ÀÚµ¿À¸·Î "f2"¸¦ ºÎ¸£Áö ¾Ê±â ¶§¹®¿¡ ¾Æ¹« Àϵµ ÀϾÁö ¾Ê½À´Ï´Ù.
f2 # "f1"À» ºÎ¸§À¸·Î½á "f2"ÀÇ Á¤Àǰ¡ ÀÌ·ç¾îÁ³±â ¶§¹®¿¡ ÀÌÁ¦´Â "f2"¸¦ ºÒ·¯µµ ±¦Âú½À´Ï´Ù.
# Thanks, S.C. |
ÇÔ¼ö ¼±¾ðÀº ¸í·É¾î°¡ ¾Æ´Ï¸é ¾È µÅ º¸ÀÌ´Â °÷¿¡¼ Á¶Â÷ °¡´ÉÇÕ´Ï´Ù.
ls -l | foo() { echo "foo"; } # °¡´ÉÇÏÁö¸¸ ¾µ¸ð ¾ø½À´Ï´Ù.
if [ "$USER" = bozo ]
then
bozo_greet () # if/then ¹® Áß°£¿¡ µé¾î°£ ÇÔ¼ö Á¤ÀÇ.
{
echo "Hello, Bozo."
}
fi
bozo_greet # bozo »ç¿ëÀÚÀÏ ¶§¸¸ µ¿ÀÛÇÏ°í ´Ù¸¥ »ç¿ëÀÚ´Â ¿¡·¯°¡ ³³´Ï´Ù.
# ¾î¶² »óȲ¿¡¼´Â ´ÙÀ½Ã³·³ ÇÏ´Â °ÍÀÌ À¯¿ëÇÒ ¶§°¡ ÀÖ½À´Ï´Ù.
NO_EXIT=1 # ¹Ø¿¡ ³ª¿Ã ÇÔ¼ö Á¤ÀǸ¦ °¡´ÉÇÏ°Ô ÇØ ÁÝ´Ï´Ù.
[[ $NO_EXIT -eq 1 ]] && exit() { true; } # "and-list" ¾È¿¡¼ ÇÔ¼ö¸¦ Á¤ÀÇ.
# $NO_EXIT °¡ 1À̶ó¸é "exit ()"¸¦ ¼±¾ð.
# "true"·Î º°Äª(alias)À» °É¾î¼ ³»Àå ¸í·É¾îÀÎ "exit"¸¦ ²ü´Ï´Ù.
exit # ³»Àå ¸í·É¾îÀÎ "exit"¸¦ ºÎ¸£Áö ¾Ê°í "exit ()" ÇÔ¼ö¸¦ ºÎ¸¨´Ï´Ù.
# Thanks, S.C. |