°í±Þ Bash ½ºÅ©¸³Æà °¡À̵å: Bash¸¦ ÀÌ¿ëÇÑ ½© ½ºÅ©¸³Æà ¿ÏÀü °¡À̵å | ||
---|---|---|
ÀÌÀü | 9Àå. º¯¼ö Àç°ËÅä(Variables Revisited) | ´ÙÀ½ |
¾î¶² º¯¼ö°ªÀÌ ´ÙÀ½¿¡ ³ª¿Ã º¯¼öÀÇ À̸§À̶ó°í °¡Á¤ÇØ º¾½Ã´Ù. ±×·¸´Ù¸é ±× ¾î¶² º¯¼ö·Î ´ÙÀ½¿¡ ³ª¿Ã º¯¼öÀÇ °ªÀ» ¾Ë¾Æ³¾ ¼ö ÀÖÀ»±î¿ä? ¿¹¸¦ µé¾î, a=letter_of_alphabet ÀÌ°í letter_of_alphabet=z ¶ó°í ÇÒ ¶§ a¸¦ ÂüÁ¶Çϸé z°¡ ³ª¿Ã±î¿ä? ÀÌ´Â ¿ì¸® »ý°¢Ã³·³ Á¦´ë·Î µ¿ÀÛÀ» ÇÏ°í À̸¦ °£Á¢ ÂüÁ¶¶ó°í ºÎ¸¨´Ï´Ù. eval var1=\$$var2 ó·³ ¾à°£Àº ÀÌ»óÇÏ°Ô »ý±ä ÇüÅ·Π½á¸ÔÀ» ¼ö ÀÖ½À´Ï´Ù.
¿¹ 9-17. °£Á¢ ÂüÁ¶
#!/bin/bash # º¯¼ö °£Á¢ ÂüÁ¶. a=letter_of_alphabet letter_of_alphabet=z echo # Á÷Á¢ ÂüÁ¶. echo "a = $a" # °£Á¢ ÂüÁ¶. eval a=\$$a echo "ÀÌÁ¦ a = $a" echo # ÀÌÁ¦ 2Â÷ ÂüÁ¶(second order reference)¸¦ ¹Ù²ãº¸µµ·Ï ÇÏÁÒ. t=table_cell_3 table_cell_3=24 echo "\"table_cell_3\" = $table_cell_3" echo -n "¿ªÂüÁ¶(dereferenced)µÈ \"t\" = "; eval echo \$$t # ÀÌ °£´ÜÇÑ ¿¹Á¦¿¡¼´Â, # eval t=\$$t; echo "\"t\" = $t" # ¶ó°í Çصµ µË´Âµ¥ ¿Ö ±×·²±î¿ä? echo t=table_cell_3 NEW_VAL=387 table_cell_3=$NEW_VAL echo "\"table_cell_3\" ÀÇ °ªÀ» $NEW_VAL ·Î ¹Ù²ß´Ï´Ù." echo "\"table_cell_3\" Àº ÀÌÁ¦ $table_cell_3 ÀÌ°í," echo -n "¿ªÂüÁ¶µÈ \"t\" ´Â "; eval echo \$$t # "eval" Àº "echo"¿Í "\$$t" µÎ °³ÀÇ ÀÎÀÚ¸¦ ¹Þ¾Æ¼ $table_cell_3 °ú ¶È°°ÀÌ ¼¼Æ®ÇØÁÝ´Ï´Ù. echo # (S.C. °¡ À§ µ¿ÀÛÀ» ÀÚ¼¼È÷ ¼³¸íÇØ ÁÖ¾ú½À´Ï´Ù.) # "Bash, ¹öÀü 2" Àå¿¡¼ ¼³¸íÇÒ ${!t} Ç¥±â¹ýµµ ¾µ ¼ö ÀÖ½À´Ï´Ù. # "ex78.sh" ¿¹Á¦¸¦ Âü°íÇϼ¼¿ä. exit 0 |
¿¹ 9-18. awk¿¡°Ô °£Á¢ ÂüÁ¶¸¦ ³Ñ±â±â
#!/bin/bash # "column totaler" ½ºÅ©¸³Æ®ÀÇ ´Ù¸¥ ¹öÀüÀ¸·Î # °£Á¢ ÂüÁ¶¸¦ »ç¿ëÇؼ, # ´ë»ó ÆÄÀÏ¿¡¼ ÁöÁ¤µÈ Ä÷³À» ¸ðµÎ ´õÇØ ÁÝ´Ï´Ù. ARGS=2 E_WRONGARGS=65 if [ $# -ne "$ARGS" ] # ¸í·É¾îÁÙ ÀÎÀÚ °¹¼ö üũ. then echo "»ç¿ë¹ý: `basename $0` filename column-number" exit $E_WRONGARGS fi filename=$1 column_number=$2 #===== ¿©±â±îÁö´Â ¿ø·¡ ½ºÅ©¸³Æ®¿Í ¶È°°³×¿ä. =====# # ¿©·¯ÁÙÂ¥¸® awk ½ºÅ©¸³Æ®´Â awk ' ..... ' ¶ó°í ÇÏ¸é µË´Ï´Ù. # awk ½ºÅ©¸³Æ® ½ÃÀÛ. # ------------------------------------------------ awk " { total += \$${column_number} # °£Á¢ ÂüÁ¶ } END { print total } " "$filename" # ------------------------------------------------ # awk ½ºÅ©¸³Æ® ³¡. # º¯¼ö °£Á¢ ÂüÁ¶´Â ½© ½ºÅ©¸³Æ® ¾È¿¡¼ awk ½ºÅ©¸³Æ®¸¦ ¾µ ¶§ # ½© º¯¼ö ÂüÁ¶½Ã ±î´Ù·Î¿î ¿©·¯°¡Áö¸¦ ÇÇÇÏ°Ô ÇØ ÁÝ´Ï´Ù. # Thanks, Stephane Chazelas. exit 0 |
°æ°í |
ÀÌ·± ½ÄÀÇ °£Á¢ ÂüÁ¶´Â ¾à°£ ±î´Ù·Î¿î ºÎºÐÀÌ Àִµ¥, ¸¸¾à¿¡ µÎ¹ø° º¯¼öÀÇ °ªÀÌ ¹Ù²î¸é ù¹ø° º¯¼ö´Â ÂüÁ¶ÇÏ´ø °ÍÀ» Á¦´ë·Î Ç®¾îÁà¾ß ÇÕ´Ï´Ù(À§ÀÇ ¿¹Á¦Ã³·³). ´ÙÇེ·´°Ôµµ, bash ¹öÀü 2(¿¹ 35-2 Âü°í)¿¡¼ »õ·Ó°Ô ³ªÅ¸³ ${!variable} Ç¥±â¹ýÀ¸·Î °£Á¢ ÂüÁ¶¸¦ Á» ´õ Á÷°üÀûÀ¸·Î ÇÒ ¼ö ÀÖ°Ô µÇ¾ú½À´Ï´Ù. |