7. ¿¹Á¦

7.1. ÀϹÝÀûÀÎ ½©ÇÁ·Î±×·¥ÀÇ ±¸Á¶

À̹øÀå¿¡¼­´Â ±×µ¿¾È ¹è¿ü´ø ±âº»ÀûÀÎ ³»¿ëµéÀ» Åä´ë·Î, ½ÇÁúÀûÀÎ ½©ÇÁ·Î±×·¥À» ¸¸µéµµ·Ï ÇØº¸ÀÚ. ¸ðµç Á¾·ùÀÇ ÈǸ¢ÇÑ ½©½ºÅ©¸³Æ®´Â µµ¿ò¸»À» °¡Áö°í ÀÖÀ¸¸ç, ¾Æ±Ô¸ÕÆ®¿É¼ÇÀ» ÆÄ½ÌÇÏ´Â ÀϹÝÀûÀÎ ·çƾÀ» °¡Áö°í ÀÖ´Ù. À̹ø¿¡ »õ·Î¸¸µé ½ºÅ©¸³Æ®´Â ÀÌ·¯ÇÑ ÁÁÀº ½ºÅ©¸³ Æ®°¡ °¡Áö´Â ·çƾµéÀ» Æ÷ÇÔÇÏ°Ô µÉ°ÍÀÌ´Ù.

7.2. ¹ÙÀ̳ʸ®¸¦ 10Áø¼ö·Î ¹Ù²ãÁÖ´Â

ÀÌ ½ºÅ©¸³Æ®´Â ¹ÙÀ̳ʸ®¸¦ ¼ýÀÚ·Î ¹Ù²ãÁÖ´Â ÀÏÀ»ÇÑ´Ù. °£´ÜÇÑ »ê¼ö °Ô»êÀ» À§Çؼ­ 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"
		
À§ÀÇ ÇÁ·Î±×·¥Àº À̸¥¹Ù 2Áø¼ö¸¦ 10Áø¼ö·Î ¹Ù²Ù¾îÁÖ´Â ÇÁ·Î±×·¥ÀÌ´Ù. ¸¸¾à¿¡ À§ÀÇ ½ºÅ©¸³Æ®·Î ÁÖ¾îÁø ¾Æ±Ô¸ÕÆ®°¡ 1101 À̶ó¸é, 2Áø¼ö¸¦ 10Áø¼ö·Î ¹Ù²Ù´Â °è»ê¹ý¿¡ ÀÇÇØ¼­ ¾Æ·¡¿Í °°Àº °á°ú°¡ ³ª¿À°Ô µÉ°ÍÀÌ´Ù.
	1*2^3 + 1*2^2 + 0*2 + 1 = 6
		
À§ ÇÁ·Î±×·¥ÀÇ ºÐ¼®Àº ¿©·¯ºÐ °¢ÀÚ¿¡°Ô ¸Ã±â°Ú´Ù.

7.3. µð¹ö±ë

µð¹ö±ëÀ» À§ÇÑ °¡Àå°£´ÜÇÑ ¹æ¹ýÀº echo ¸í·ÉÀ» ÀÌ¿ëÇØ¼­ °á°ú°ªÀ» Ãâ·ÂÇØº¸´Â ¹æ¹ýÀÌ´Ù. - À̹æ¹ýÀº ´Ù¸¥ ¸ðµç ¾ð¾î¿¡µµ °øÅëÀûÀ¸·Î Àû¿ëµÈ´Ù. C´Â printf, PerlÀº print µîÀÌ µÉ°ÍÀÌ´Ù - ´ç½ÅÀº echo ¸¦ ÀÌ¿ëÇØ¼­ º¯¼ö°ªÀ» ¾Ë¾Æº½À¸·Î½á, ¾î´ÀºÎºÐ¿¡¼­ ½Ç¼ö¸¦ Çß´ÂÁö¸¦ ¾Ë¼ö ÀÖ´Ù. ¾Æ¸¶µµ ´ëºÎºÐÀÇ ½© ÇÁ·Î±×·¡¸Ó´Â ÀÌ·¯ÇÑ ½Ç¼ö¸¦ ã´Âµ¥ Àüü ÇÁ·Î±×·¥À» Â¥´Â ½Ã°£ÀÇ 80% Á¤µµ¸¦ º¸³¾°ÍÀÌ´Ù. ½©½ºÅ©¸³Æ®ÀÇ ÀÕÁ¡Àº ÀÌ·¯ÇÑ Å×½ºÆ®¸¦ À§Çؼ­ echo ¹®À» »ç¿ëÇϴµ¥, ´Ù½Ã ÄÄÆÄÀÏÇÒ Çʿ䰡 ¾ø¾î¼­, ½Ã°£À» Àý¾àÇÒ¼ö ÀÖ´Ù¶ó´Â °ÍÀÌ´Ù.

½©½ºÅ©¸³Æ®¸¦ µð¹ö±ë ¸ðµå·Î µ¹¸®°í ½Í´Ù¸é ¾Æ·¡¿Í °°ÀÌ ÇÏ¸é µÈ´Ù. µð¹ö±ë ÇϰíÀÚ ÇÏ´Â ½©½ºÅ©¸³Æ®ÀÇ À̸§Àº strangescript ¶ó°í ÇÏÀÚ.
	sh -x strangescript
			
À§¿Í °°ÀÌ ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇϸé, ½©ÀÌ ½ÇÇàµÇ´Â µ¿¾È¿¡ »ç¿ëµÈ º¯¼öÀÇ ¸ðµç °ªÀ» È­¸é»ó¿¡ Ãâ·Â½ÃÄÑÁØ´Ù. ±×·³À¸·Î ¾î´À °÷¿¡¼­ ½Ç¼ö¸¦ Çß´ÂÁö ½±°Ô ãÀ»¼ö ÀÖ´Ù.

	sh -n strangescript
			
À§¿Í °°ÀÌ "-n" ¿É¼ÇÀ» ÀÌ¿ëÇϸé syntax ¿À·ù¸¦ ã¾Æ³¾¼ö ÀÖ´Ù. À§ÀÇ ¿É¼Ç¿¡¼­´Â syntax ¿À·ù ¿ÜÀÇ ´Ù¸¥ °ªµéÀº º¸¿©ÁÖÁö ¾Ê´Â´Ù.