Áö±Ý ¿©·¯ºÐÀÌ ½Ã½ºÅÛ¿¡¼ ¾²°í ÀÖ´Â Bash ´Â ¹öÀü 2.XX ´ë ÀÔ´Ï´Ù.
bash$ echo $BASH_VERSION 2.04.21(1)-release |
¿¹ 35-1. ¹®ÀÚ¿ È®Àå
#!/bin/bash # ¹®ÀÚ¿ È®Àå. # Bash ¹öÀü 2 ºÎÅÍ ¼Ò°³µÊ. # $'xxx' ÇüÅÂÀÇ ¹®ÀÚ¿µéÀº Ç¥ÁØ À̽ºÄÉÀÌÇÁ ¹®ÀÚ·Î Çؼ®µË´Ï´Ù. echo $'º§ 3¹ø ¿ï¸®±â \a \a \a' echo $'3¹øÀÇ ÆûÇǵå(form feed) \f \f \f' echo $'10¹øÀÇ ´º¶óÀÎ(newline) \n\n\n\n\n\n\n\n\n\n' exit 0 |
¿¹ 35-2. °£Á¢ º¯¼ö ÂüÁ¶ - »õ·Î¿î ¹æ¹ý
#!/bin/bash # º¯¼ö °£Á¢ ÂüÁ¶. # C++ ÀÇ ÂüÁ¶ Ư¼ºÀÌ ¾à°£ °¡¹ÌµÇ¾ú½À´Ï´Ù. a=letter_of_alphabet letter_of_alphabet=z echo "a = $a" # Á÷Á¢ ÂüÁ¶. echo "Now a = ${!a}" # °£Á¢ ÂüÁ¶. # ${!variable} Ç¥±â¹ýÀº ¿¹ÀüÀÇ "eval var1=\$$var2" º¸´Ù ÈξÀ ÁÁ½À´Ï´Ù. echo t=table_cell_3 table_cell_3=24 echo "t = ${!t}" # t = 24 table_cell_3=387 echo "t ÀÇ °ªÀÌ ${!t} ·Î ¹Ù²î¾ú½À´Ï´Ù." # 387 # ¹è¿À̳ª Å×ÀÌºí ¸â¹ö¸¦ ÂüÁ¶ÇÒ ¶§³ª #+ ´ÙÂ÷¿ø ¹è¿À» ½Ã¹Ä·¹ÀÌ¼Ç ÇÒ °æ¿ì¿¡ ¾µ ¸¸ ÇÕ´Ï´Ù. # À妽ÌÀ» ¿É¼ÇÀ¸·Î °¡Á³´Ù¸é ´õ ÁÁ¾ÒÀ» °Ì´Ï´Ù(ÈÞ~~). exit 0 |
¿¹ 35-3. ¹è¿°ú ¾à°£ÀÇ Æ®¸¯À» ½á¼ ÇÑ ¹úÀÇ Ä«µå¸¦ 4¸í¿¡°Ô ·£´ýÇÏ°Ô µ¹¸®±â
#!/bin/bash # ¿À·¡µÈ ½Ã½ºÅÛÀ̶ó¸é #!/bin/bash2 ·Î ½ÇÇà½ÃÄÑ¾ß ÇÒÁöµµ ¸ð¸¨´Ï´Ù. # Ä«µå: # Ä«µå ÇÑ ¹úÀ» 4¸í¿¡°Ô ¹«ÀÛÀ§·Î µ¹¸®±â. UNPICKED=0 PICKED=1 DUPE_CARD=99 LOWER_LIMIT=0 UPPER_LIMIT=51 CARDS_IN_SUIT=13 CARDS=52 declare -a Deck declare -a Suits declare -a Cards # ÇϳªÂ¥¸® 3Â÷¿ø ¹è¿À̶ó¸é ´õ ½±°í ´õ Á÷°üÀûÀ̾úÀ» °Ì´Ï´Ù. # ¾Æ¸¶ Bash ´ÙÀ½ ¹öÀü¿¡¼´Â ´ÙÂ÷¿ø ¹è¿À» Áö¿øÇÒ °Ì´Ï´Ù. initialize_Deck () { i=$LOWER_LIMIT until [ "$i" -gt $UPPER_LIMIT ] do Deck[i]=$UNPICKED # Ä«µå "ÇÑ ¹ú"(deck)À» ¸ðµÎ ¾È °í¸¥ »óÅ·ΠµÒ. let "i += 1" done echo } initialize_Suits () { Suits[0]=C # Ŭ·Î¹ö(Clubs) Suits[1]=D # ´ÙÀ̾Ƹóµå(Diamonds) Suits[2]=H # ÇÏÆ®(Hearts) Suits[3]=S # ½ºÆäÀ̵å(Spades) } initialize_Cards () { Cards=(2 3 4 5 6 7 8 9 10 J Q K A) # ¹è¿À» ÃʱâÈÇÏ´Â ¶Ç ´Ù¸¥ ¹æ¹ý. } pick_a_card () { card_number=$RANDOM let "card_number %= $CARDS" if [ "${Deck[card_number]}" -eq $UNPICKED ] then Deck[card_number]=$PICKED return $card_number else return $DUPE_CARD fi } parse_card () { number=$1 let "suit_number = number / CARDS_IN_SUIT" suit=${Suits[suit_number]} echo -n "$suit-" let "card_no = number % CARDS_IN_SUIT" Card=${Cards[card_no]} printf %-4s $Card # Ä«µå¸¦ Ä ´ÜÀ§·Î ±ò²ûÇÏ°Ô Ãâ·Â. } seed_random () # ·£´ý ³Ñ¹ö ¹ß»ý±â seed. { seed=`eval date +%s` let "seed %= 32766" RANDOM=$seed } deal_cards () { echo cards_picked=0 while [ "$cards_picked" -le $UPPER_LIMIT ] do pick_a_card t=$? if [ "$t" -ne $DUPE_CARD ] then parse_card $t u=$cards_picked+1 # Àӽ÷Π1 ºÎÅÍ À妽ÌÇÏ´Â ÇüÅ·Π¹Ù²Þ. let "u %= $CARDS_IN_SUIT" if [ "$u" -eq 0 ] # ÁßøµÈ if/then Á¶°Ç Å×½ºÆ®. then echo echo fi # ´Ù¸¥ »ç¶÷. let "cards_picked += 1" fi done echo return 0 } # ±¸Á¶Àû ÇÁ·Î±×·¡¹Ö: # Àüü ÇÁ·Î±×·¥ ·ÎÁ÷Àº ÇÔ¼ö·Î ¸ðµâÈ µÇ¾î ÀÖ½À´Ï´Ù. #================ seed_random initialize_Deck initialize_Suits initialize_Cards deal_cards exit 0 #================ # ¿¬½À¹®Á¦ 1: # Àüü¿¡ ´ëÇØ ¿ÏÀüÇÑ ÁÖ¼®À» ´Þ¾Æº¸¼¼¿ä. # ¿¬½À¹®Á¦ 2: # ÇÑ »ç¶÷ÀÌ ¹ÞÀº Ä«µå¸¦ Á¾·ù¼øÀ¸·Î Á¤·ÄÇؼ º¸¿©ÁÖµµ·Ï °íÃĺ¸¼¼¿ä. # ÇÊ¿äÇÏ´Ù¸é Æí¸®ÇÑ ´Ù¸¥ ±â´ÉÀ» ½áµµ ±¦Âú½À´Ï´Ù. # ¿¬½À¹®Á¦ 3: # ½ºÅ©¸³Æ®¸¦ °£·«ÈÇÏ°í, ÇÕ¸®ÀûÀÎ ·ÎÁ÷ÀÌ µÇµµ·Ï °íÃĺ¸¼¼¿ä. |
[1] | Chet Ramey ´Â ÆÞ¿¡¼ ¾²ÀÌ´Â ¿¬°ü ¹è¿(associative arrays) À» ´ÙÀ½ Bash ¿¡¼ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ÇÏ°Ú´Ù°í ¾à¼ÓÇß½À´Ï´Ù. |