9.4. º¯¼ö ŸÀÔ ÁöÁ¤: declare ³ª typeset

declare³ª typeset ³»Àå ¸í·É(ÀÌ µÑÀº µ¿ÀǾîÀÔ´Ï´Ù.) Ű¿öµå´Â º¯¼öÀÇ Æ¯¼ºÀ» Á¦ÇÑÇÒ ¼ö ÀÖ½À´Ï´Ù. À̰ÍÀº ¸î¸î ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡¼­ º¼ ¼ö ÀÖ´Â ºÒ¿ÏÀüÇÑ ÇüÅÂÀÇ Å¸ÀÔ ÁöÁ¤ÀÔ´Ï´Ù. declare ¸í·É¾î´Â bash ¹öÀü 2 ÀÌÈĺÎÅÍ °¡´ÉÇÕ´Ï´Ù. typeset ¸í·É¾î´Â ksh ½ºÅ©¸³Æ®¿¡¼­µµ °¡´ÉÇÕ´Ï´Ù.

declare/typeset ¿É¼Ç

-r Àбâ Àü¿ë

declare -r var1

(declare -r var1 ´Â readonly var1 ¿Í ¶È°°ÀÌ µ¿ÀÛÇÕ´Ï´Ù)

C¿¡¼­ const ÇüÇÑÁ¤¾î(qualifier)¿Í °ÅÀÇ ºñ½ÁÇϰí, ÀÌ·± º¯¼öÀÇ °ªÀ» ¹Ù²Ù·Á°í ÇÏ¸é ¿¡·¯ ¸Þ¼¼Áö°¡ ³³´Ï´Ù.

-i Á¤¼ö

declare -i number
# ÀÌ ½ºÅ©¸³Æ®´Â ÀÌÈÄ ³ª¿À´Â ¸ðµç "number"¸¦ Á¤¼ö·Î Ãë±ÞÇÒ °ÍÀÔ´Ï´Ù.

number=3
echo "number = $number"     # number = 3

number=three
echo "number = $number"     # number = 0
# "three"¸¦ Á¤¼ö·Î °è»êÇÏ·Á´Â ½Ãµµ.
expr À̳ª let ÀÌ ¾øÀÌ Á¤¼ö·Î ¼±¾ðµÈ º¯¼ö¿¡ ´ëÇÑ ¿¬»êÀ» Çã¿ëÇÏ´Â ¸î¸î »ê¼ú ¿¬»êÀÌ ÀÖ½À´Ï´Ù.

-a ¹è¿­

declare -a indices

indices º¯¼ö´Â ¹è¿­·Î Ãë±ÞµË´Ï´Ù.

-f ÇÔ¼ö

declare -f

½ºÅ©¸³Æ®¿¡¼­ ÀÎÀÚ ¾øÀÌ declare -f °¡ ³ª¿À´Â ÁÙ¿¡¼­´Â ½ºÅ©¸³Æ®¾È¿¡¼­ Á¤ÀÇµÈ ¸ðµç ÇÔ¼öµéÀÇ ¸ñ·ÏÀ» º¸¿©ÁÝ´Ï´Ù.

declare -f function_name

½ºÅ©¸³Æ® ¾È¿¡¼­ declare -f function_name ¶ó°í ÇÏ¸é ±×³É ±× ÇÔ¼ö À̸§À» º¸¿©ÁÝ´Ï´Ù.

-x export

declare -x var3

ÀÌ ¼±¾ðÀº ½ºÅ©¸³Æ® ¿ÜºÎ ȯ°æ¿¡¼­µµ ÀÌ º¯¼ö¸¦ ¾µ ¼ö ÀÖ°Ô ÇØ ÁÝ´Ï´Ù.

var=$value

declare -x var3=373

declare ¸í·É¾î´Â ÇÑ ¹®Àå ¾È¿¡¼­ ¼±¾ð°ú µ¿½Ã¿¡ ±× °ªÀ» ÇÒ´çÇÒ ¼ö ÀÖ°Ô ÇØ ÁÝ´Ï´Ù.

¿¹ 9-16. declare¸¦ ½á¼­ º¯¼ö ŸÀÔ ÁöÁ¤Çϱâ

#!/bin/bash

func1 ()
{
echo ¿©±â´Â ÇÔ¼ö¿¡¿ä.
}

declare -f        # À§ ÇÔ¼ö¸¦ ³ª¿­.

echo

declare -i var1   # var1 Àº Á¤¼ö.
var1=2367
echo "var1 Àº $var1 ·Î ¼±¾ðµÆ½À´Ï´Ù."
var1=var1+1       # Á¤¼ö ¼±¾ðÀº 'let' ÀÌ ÇÊ¿ä¾ø½À´Ï´Ù.
echo "1ÀÌ Áõ°¡µÈ var1 Àº $var1 ÀÔ´Ï´Ù."
# Attempt to change variable declared as integer
echo "var1À» ºÎµ¿Çü °ªÀÎ 2367.1 ·Î ¹Ù²Ù·Á´Â ½Ãµµ."
var1=2367.1       # ¿¡·¯ ¸Þ¼¼Áö¸¦ ³»°í °ªÀº º¯ÇÏÁö ¾Ê½À´Ï´Ù.
echo "var1 Àº ¿©ÀüÈ÷ $var1 ÀÔ´Ï´Ù."

echo

declare -r var2=13.36         # 'declare' ´Â º¯¼ö ŸÀÔÀ» ¼³Á¤ÇÏ°í µ¿½Ã¿¡ 
                              #+ ±× °ªÀ» ÇÒ´çÇÒ ¼ö ÀÖ°Ô ÇØ ÁÝ´Ï´Ù.
echo "var2 ´Â $var2 ·Î ¼±¾ðµÆ½À´Ï´Ù." # Àбâ Àü¿ë º¯¼ö °ªÀ» º¯°æÇÏ·Á´Â ½Ãµµ.
var2=13.37                    # ¿¡·¯ ¸Þ¼¼Áö¸¦ ³»°í ½ºÅ©¸³Æ® Á¾·á.

echo "var2 ´Â ¿©ÀüÈ÷ $var2 ÀÔ´Ï´Ù."    # ¿©±â´Â ½ÇÇàµÇÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù.

exit 0                        # ¿©±â¼­ Á¾·áµÇÁö ¾Ê½À´Ï´Ù.