| °í±Þ 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} Ç¥±â¹ýÀ¸·Î °£Á¢ ÂüÁ¶¸¦ Á» ´õ Á÷°üÀûÀ¸·Î ÇÒ ¼ö ÀÖ°Ô µÇ¾ú½À´Ï´Ù. |