À̹øÀå¿¡¼´Â ±×µ¿¾È ¹è¿ü´ø ±âº»ÀûÀÎ ³»¿ëµéÀ» Åä´ë·Î, ½ÇÁúÀûÀÎ ½©ÇÁ·Î±×·¥À» ¸¸µéµµ·Ï ÇØº¸ÀÚ. ¸ðµç Á¾·ùÀÇ ÈǸ¢ÇÑ ½©½ºÅ©¸³Æ®´Â µµ¿ò¸»À» °¡Áö°í ÀÖÀ¸¸ç, ¾Æ±Ô¸ÕÆ®¿É¼ÇÀ» ÆÄ½ÌÇÏ´Â ÀϹÝÀûÀÎ ·çƾÀ» °¡Áö°í ÀÖ´Ù. À̹ø¿¡ »õ·Î¸¸µé ½ºÅ©¸³Æ®´Â ÀÌ·¯ÇÑ ÁÁÀº ½ºÅ©¸³ Æ®°¡ °¡Áö´Â ·çƾµéÀ» Æ÷ÇÔÇÏ°Ô µÉ°ÍÀÌ´Ù.
ÀÌ ½ºÅ©¸³Æ®´Â ¹ÙÀ̳ʸ®¸¦ ¼ýÀÚ·Î ¹Ù²ãÁÖ´Â ÀÏÀ»ÇÑ´Ù. °£´ÜÇÑ »ê¼ö °Ô»êÀ» À§Çؼ expr À» »ç¿ëÇϵµ·Ï ÇÑ´Ù.
#!/bin/sh help() { cat << HELP b2h -- convert binary to decimal USAGE: b2h [-h] binarynum OPTIONS: -h help text EXAMPLE: b2h 111010 whill return 58 HELP exit 0 } error() { # print an error and exit echo "$1" exit 1 } lastchar() { #return the last character of a string in $rval if [ -z "$1" ] then rval="" return fi numofchar=`echo -n "$1" | wc -c | sed 's/ //g'` rval=`echo -n "$1" | cut -b $numofchar` } chop() { # remove the last character in string and return it in $rval if [ -z "$1" ] then # empty string rval="" return fi # wc puts some space behind the output this is why we need sed: numofchar=`echo -n "$1" | wc -c | sed 's/ //g' ` if [ "$numofchar" = "1" ] then # only one char in string rval="" return fi numofcharminus1=`expr $numofchar "-" 1` # now cut all but the last char: rval=`echo -n "$1" | cut -b 0-${numofcharminus1}` } while [ -n "$1" ] do case $1 in -h) help;shift 1;; # function help is called --) shift;break;; # end of options -*) error "error: no such option $1. -h for help";; *) break;; esac done # The main program sum=0 weight=1 # one arg must be given: [ -z "$1" ] && help binnum="$1" binnumorig="$1" while [ -n "$binnum" ]; do lastchar "$binnum" if [ "$rval" = "1" ] then sum=`expr "$weight" "+" "$sum"` fi # remove the last position in $binnum chop "$binnum" binnum="$rval" weight=`expr "$weight" "*" 2` done echo "binary $binnumorig is decimal $sum" |
1*2^3 + 1*2^2 + 0*2 + 1 = 6 |
µð¹ö±ëÀ» À§ÇÑ °¡Àå°£´ÜÇÑ ¹æ¹ýÀº echo ¸í·ÉÀ» ÀÌ¿ëÇØ¼ °á°ú°ªÀ» Ãâ·ÂÇØº¸´Â ¹æ¹ýÀÌ´Ù. - À̹æ¹ýÀº ´Ù¸¥ ¸ðµç ¾ð¾î¿¡µµ °øÅëÀûÀ¸·Î Àû¿ëµÈ´Ù. C´Â printf, PerlÀº print µîÀÌ µÉ°ÍÀÌ´Ù - ´ç½ÅÀº echo ¸¦ ÀÌ¿ëÇØ¼ º¯¼ö°ªÀ» ¾Ë¾Æº½À¸·Î½á, ¾î´ÀºÎºÐ¿¡¼ ½Ç¼ö¸¦ Çß´ÂÁö¸¦ ¾Ë¼ö ÀÖ´Ù. ¾Æ¸¶µµ ´ëºÎºÐÀÇ ½© ÇÁ·Î±×·¡¸Ó´Â ÀÌ·¯ÇÑ ½Ç¼ö¸¦ ã´Âµ¥ Àüü ÇÁ·Î±×·¥À» Â¥´Â ½Ã°£ÀÇ 80% Á¤µµ¸¦ º¸³¾°ÍÀÌ´Ù. ½©½ºÅ©¸³Æ®ÀÇ ÀÕÁ¡Àº ÀÌ·¯ÇÑ Å×½ºÆ®¸¦ À§Çؼ echo ¹®À» »ç¿ëÇϴµ¥, ´Ù½Ã ÄÄÆÄÀÏÇÒ Çʿ䰡 ¾ø¾î¼, ½Ã°£À» Àý¾àÇÒ¼ö ÀÖ´Ù¶ó´Â °ÍÀÌ´Ù.
½©½ºÅ©¸³Æ®¸¦ µð¹ö±ë ¸ðµå·Î µ¹¸®°í ½Í´Ù¸é ¾Æ·¡¿Í °°ÀÌ ÇÏ¸é µÈ´Ù. µð¹ö±ë ÇϰíÀÚ ÇÏ´Â ½©½ºÅ©¸³Æ®ÀÇ À̸§Àº strangescript ¶ó°í ÇÏÀÚ.
sh -x strangescript |
sh -n strangescript |