6. ½©¸í·É°ú Á¦¾î±¸Á¶

À̹øÀå¿¡¼­´Â ½©½ºÅ©¸³Æ®¸¦ ´Ù·ç´Âµ¥ ÇÊ¿äÇÑ 3°¡Áö ºÎ¼öÀûÀÎ ÁÖÁ¦¸¦ ¼³¸íÇÏ°Ô µÉ°ÍÀÌ´Ù.

6.1. À¯´Ð½º ¸í·É¾îµé

½©½ºÅ©¸³Æ®´Â À¯´Ð½º ¸í·É¾îµéÀÇ ÁýÇÕÀ̹ǷÎ, À¯´Ð½º ¸í·É¾î¿¡ ´ëÇØ¼­ ¾î´ÀÁ¤µµÀÇ ¼÷Áö°¡ ÇÊ¿äÇÏ´Ù. ÀÌ·¯ÇÑ ¸í·É¾îµéÀº ÁÖ·Î ÆÄÀϰú ¹®ÀÚ¿­À» ÆíÁýÇϱâ À§Çؼ­ ¾²¿©Áø´Ù. ÀÌ·¯ÇÑ ¸í·É¾îµéÁß ÀÚÁÖ ¾²ÀÌ´Â ¸í·É¾îµéÀ» Á¤¸®Çß´Ù.

Ç¥ 1. ÀÚÁÖ »ç¿ëµÇ´Â À¯´Ð½º ¸í·É¾îµé

echo "some text"some text ¸¦ È­¸é¿¡ Ãâ·ÂÇÑ´Ù
wc -l fileÆÄÀÏÀÇ ¶óÀμö
cp sourcefile destfilesourcefile À» destfile ·Î º¹»ç
mv oldname newnameÆÄÀÏÀ̸§À» ¹Ù²Ù°Å³ª ÆÄÀÏÀÇ À̵¿
rm fileÆÄÀÏ Áö¿ì±â
grep 'pattern' fileÆÄÀÏ¿¡¼­ patternÀÇ ¹®ÀÚ¿­À» ã±â
cub -b colnum fileÆÄÀÏ¿¡¼­ ¹®ÀÚ¿­À» Ä÷³´ÜÀ§·Î Àß¶ó¼­ º¸¿©ÁÜ
cat file.txtfile.txt ¸¦ Ç¥ÁØÃâ·Â(stdout) ½ÃÅ´
file somefilesomefile ÀÇ ÆÄÀÏŸÀÔ ¾Ë¾Æ³»±â
read varÀԷ°ªÀ» º¯¼ö¸ívar ¿¡ ´ëÀÔ
sort file.txtfile.txt ¸¦ ¶óÀδÜÀ§·Î Á¤·Ä
uniqÆÄÀÏ¿¡¼­ Áߺ¹µÇ´Â ¹®ÀÚ¿­À» Á¦°Å
teeÇ¥ÁØÃâ·ÂµÇ´Â Á¤º¸¸¦ ÆÄÀÏ·Î ¾²±â
basename fileµð·ºÅ丮¸íÀ» Á¦¿ÜÇÑ ÆÄÀÏÀÇ ½ÇÁ¦À̸§À» µ¹·ÁÁÜ
dirname fileÆÄÀÏÀ̸§À» Á¦¿ÜÇÑ µð·ºÅ丮ÀÇ À̸§À» µ¹·ÁÁÜ
head fileÆÄÀÏÀÇ Ã³À½ ¸î¶óÀÎÀ» Ãâ·ÂÇÔ
tail fileÆÄÀÏÀÇ ¸¶Áö¸· ¸î¶óÀÎÀ» Ãâ·ÂÇÔ
sedÁ¤±ÔÇ¥Çö¿¡ ÀÇÇÑ ¹®ÀÚ¿­ÀÇ °Ë»ö¹× ġȯ¿¡ »ç¿ëµÊ

6.2. pipes(ÆÄÀÌÇÁ), redirection(ÀçÁöÇâ)

Pipes(|) ´Â ÇϳªÀÇ ÇÁ·Î±×·¥À» ½ÇÇà½ÃÄѼ­ ¹ß»ýµÈ Ç¥ÁØÃâ·Â µ¥ÀÌŸ¸¦ ´Ù¸¥ ÇÁ·Î±×·¥¿¡ Ç¥ÁØÀÔ·Â ½Ã۰íÀÚ ÇÒ¶§ »ç¿ëµÈ´Ù. Áï ÇÁ·Î¼¼½º°£ µ¥ÀÌŸ Åë½ÅÀ» À§ÇÑ ÇϳªÀÇ ¹æ¹ýÀ¸·Î »ç¿ëµÈ´Ù.
	grep "hello" file.txt | wc -l	
			
À§ÀÇ ½ºÅ©¸³Æ®´Â file.txt ¿¡¼­ hello¹®ÀÚ¿­À» Æ÷ÇÔÇÑ ¶óÀÎÀ» ã¾Æ¼­(grep), ¸î°³ÀÇ ¶óÀÎÀÌ hello ¸¦ Æ÷ÇÔÇϰí ÀÖ´ÂÁöÀÇ ¶óÀμö¸¦ µ¹·ÁÁØ´Ù.

redirection Àº "ÀçÁöÇâ" À̶ó°í ºÒ¸®¿öÁø´Ù. ¿ì¸®³ª¶ó ¸»·Î Ç¥ÇöÇÏÀÚ¸é "´Ù½Ã ÇâÇÏ°Ô ÇÏ´Ù" À̸ç, ¾î¶² ÇÁ·Î±×·¥ÀÇ Ãâ·Â Á¤º¸¸¦ ´Ù¸¥°÷À¸·Î ´Ù½Ã ÇâÇÏ°Ô ÇÒ¶§ ¾²ÀδÙ. ¿©±â¿¡¼­ ´Ù¸¥°÷À̶õ ÁÖ·Î ÆÄÀÏÀ» ¶æÇÑ´Ù. ÀçÁöÇâÀ» À§Çؼ­´Â ">" °ú ">>" À» ¾´´Ù. ">"À» »ç¿ëÇÏ°Ô µÇ¸é »õ·Î¿î ÆÄÀÏÀ» ¸¸µé°Ô µÈ´Ù. ±âÁ¸¿¡ °°Àº À̸§ÀÇ ÆÄÀÏÀÌ ÀÖ¾ú´Ù¸é, ±× ÆÄÀÏÀº Áö¿öÁö°Ô µÈ´Ù. ">>" À» ¾²°Ô µÇ¸é ±âÁ¸¿¡ °°Àº À̸§ÀÇ ÆÄÀÏÀÌ ÀÖ´Ù¸é ±× ÆÄÀÏÀÇ ¸¶Áö¸·ºÎºÐ¿¡ µ¡ ºÙ¿©Áö°Ô µÈ´Ù. °°Àº À̸§ÀÇ ÆÄÀÏÀÌ ¾ø´Ù¸é ¹°·Ð »õ·Î¿î ÆÄÀÏÀ» ¸¸µé°Ô µÈ´Ù.
	[root@localhost /root]# cat address.txt | grep "seoul"  > seoul_add.txt
			
address.txt ¿¡´Â ÁÖ¼ÒÁ¤º¸°¡ ´ã°Ü ÀÖ´Ù. À§ÀÇ ½ºÅ©¸³Æ®´Â ÀÌÁß ÁÖ¼ÒÁö°¡ "seoul" ÀÎ Á¤º¸¸¸À» µû·Î »Ì¾Æ¼­ seoul_add.txt ¿¡ ÀúÀåÇÏ´Â ÀÏÀ» ¼öÇàÇÑ´Ù.

6.3. Á¦¾î±¸Á¶

"if"´Â ÂüÀÎÁö °ÅÁþÀÎÁö ÆÇ´ÜÇÒ¶§ »ç¿ëÇÑ´Ù. ÂüÀ̶ó¸é then ºÎºÐÀ» ½ÇÇàÇÏ°í ±×·¸Áö ¾Ê´Ù¸é else ºÎºÐÀ» ½ÇÇàÇÑ´Ù.
	if .....
	then
		....
	else
		....
	fi
		
if ÀÇ °¡Àå À¯¿ëÇÑ »ç¿ëó´Â "»óÅÂ" ¸¦ Å×½ºÆ®(test) Çϴµ¥ ÀÖ´Ù. Áï ¹®ÀÚºñ±³, ÆÄÀÏÀÌ Á¸ÀçÇÏ´ÂÁö, ÆÄÀÏÀÌ ½ÇÇàÆÄÀÏÀÎÁö, µð·ºÅ丮ÀÎÁö, ÀÐÀ»¼ö ÀÖ´ÂÁö ... µî¿¡ À¯¿ëÇÏ°Ô »ç¿ëÇÒ¼ö ÀÖÀ¸¸ç, ÀÌ·¯ÇÑ ÀÛ¾÷ÀÇ Á¦¾î¸¦ À§ÇÑ Æ¯¼öÇÑ ¸í·É¾î µéÀ» Á¦°øÇÑ´Ù. ÀÌ·¯ÇÑ "test" Á¶°ÇµéÀº "[ ]" »çÀÌ¿¡ ¾²¸éµÈ´Ù. "[" °ú "]" »çÀÌ¿¡´Â ¹Ýµå½Ã °ø¹é¹®ÀÚ°¡ µé¾î°¡¾ß µÈ´Ù´Â °ÍÀ» ÁÖÀÇÇÏÀÚ.
	[ -f "somefile" ]   : somefile ÀÌ ÆÄÀÏÀÎÁö¸¦ Å×½ºÆ® ÇÑ´Ù.
	[ -x "/bin/ls" ]    : /bin/ls °¡ ½ÇÇàÆÄÀÏÀÎÁö¸¦ °Ë»çÇÑ´Ù.
	[ -n "$var" ]       : $var º¯¼ö¿¡ ¾î¶² °ªÀÌ ´ëÀԵǾî ÀÖ´ÂÁö¸¦ °Ë»çÇÑ´Ù.
	[ "$a" = "$b" ]     : $a ¿Í $b °¡ °°ÀºÁö °Ë»çÇÑ´Ù.
	["$a" = "$b"]       : "[" °ú "]" »çÀÌ¿¡ °ø¹éÀÌ ¿ÀÁö ¾Ê¾ÒÀ½À¸·Î À߸øµÈ ¹®ÀåÀÌ´Ù.
		
"man test" ¸¦ ÀÌ¿ëÇØ¼­ ¾î¶°ÇÑ test operator ÀÌ ÀÖ´ÂÁö È®ÀÎ ÇÒ¼ö ÀÖ´Ù.
	#!/bin/sh
	if [ "$SHELL" = "/bin/bash" ]
	then
		echo "your login shell is the bash (bourne again shell)"
	else
		echo "your login shell is not bash but $SHELL"
	fi
		
$SHELL Àº ȯ°æº¯¼ö·Î½á »ç¿ëÀÚÀÇ ·Î±×ÀÎ ½©ÀÇ À̸§À» °¡Áö°í ÀÖ´Ù. À§ÀÇ ½ºÅ©¸³Æ®´Â $SHELL ÀÇ °ªÀ» Å×½ºÆ® ÇÔÀ¸·Î½á »ç¿ëÀÚ°¡ ¾î¶² ½©À» »ç¿ëÇÏ´ÂÁö ¾Ë¾Æ³»´Â ÀÏÀ» ÇÑ´Ù.

6.4. °£´ÜÇÏ°Ô Ç¥ÇöÇϱâ

C ¾ð¾î¸¦ ÀÚÁÖ »ç¿ëÇØ º»»ç¶÷Àº ¾Æ·¡¿Í °°Àº ¹®Àå¿¡ Àͼ÷ÇÒ °ÍÀÌ´Ù.
	[ -f "/etc/shadow" ] && echo "This computer uses shadow passwords"
			
À§ÀÇ ¹®Àå¿¡¼­´Â && À» »ç¿ëÇØ¼­ if ¹®À» °£´ÜÇÏ°Ô Ç¥ÇöÇϰí ÀÖ´Ù. ¿ÞÂÊ ¹®ÀåÀÌ ÂüÀÌ¸é ¿À¸¥ÂÊÀ» ½ÇÇàÇ϶ó´Â °ÍÀ¸·Î, /etc/shadow ¶ó´Â ÆÄÀÏÀÌ Á¸ÀçÇÑ´Ù¸é ½¦µµ¿ì ÆÐ½º¿öµå¸¦ »ç¿ëÇÑ´Ù°í À¯Àú¿¡°Ô ¾Ë·ÁÁÖ´Â ÀÏÀ»ÇÑ´Ù. || ¸¦ »ç¿ëÇÏ¸é ±×¹Ý´ëÀÇ °æ¿ìÀÌ´Ù. °£´ÜÇÑ »ç¿ë¿¹¸¦ µé¾î º¸°Ú´Ù.
	#!/bin/sh
	mailfolder=/var/spool/mail/james
	[ -r "$mailfolder" ] || { echo "Can not read $mailfolder; exit 1;}
	echo "$mailfolder has mail from : "
	grep "^From " $mailfolder
			
À§ÀÇ ÇÁ·Î±×·¥Àº james °èÁ¤»ç¿ëÀÚÀÇ ¸ÞÀÏÆÄÀÏÀ» °Ë»çÇØ¼­ ¸ÞÀÏ ÆÄÀÏÀ» ÀÐÀ»¼ö ¾øÀ¸¸é ¿¡·¯¸Þ½ÃÁö¿Í ÇÔ²² Á¾·á ÇÏ°í ±×·¸Áö ¾ÊÀ¸¸é grep À» ½á¼­ ´©±¸¿¡°Ô·Î ºÎÅÍ ¸ÞÀÏÀÌ ¿Ô´ÂÁö¸¦ °èÁ¤ »ç¿ëÀÚ¿¡°Ô ¾Ë·ÁÁÖ´Â ÀÏÀ»ÇÑ´Ù.

case ´Â if elif else ¸¦ Á»´õ ÀϹÝÈ­ ½ÃŲ Á¦¾î±¸Á¶ÀÌ´Ù. if ¹®À» ¾²´õ¶óµµ ¿©·¯¹øÀÇ Á¶°Ç¿¡ ´ëÇØ¼­ °Ë»çÇÒ¼öÀÖÁö¸¸ ±×·²°æ¿ì if elif °¡ ¾îÁö·´°Ô Áßø µÇ´Â °á°ú¸¦ º¸¿©ÁÙ°ÍÀÌ´Ù. ÀÌ·²¶§ case ¸¦ »ç¿ëÇϸé Á»´õ °¡µ¶¼º°ú À¯Áö°¡ ¿ëÀÌÇÑ Äڵ带 ¸¸µé¾î ³¾¼ö ÀÖ´Ù. Áï if elsif ¸¦ °£´ÜÇÏ°Ô Ç¥ÇöÇÒ¼ö ÀÖ´Ù. ÀÌÇØ¸¦ ½±°Ô Çϱâ À§Çؼ­ ƯÁ¤ÆÄÀÏÀÌ ¾î¶°ÇÑ Æ÷¸äÀÇ ¾ÐÃàÆÄÀÏÀÎÁö¸¦ ¾Ë¾Æ³»´Â ½ºÅ©¸³Æ®¸¦ ¸¸µé¾î º¸µµ·Ï ÇÏÀÚ. ÆÄÀÏÀÇ Á¾·ù¸¦ ¾Ë±â À§Çؼ­´Â file À̶õ ¸í·ÉÀ» ¾²¸é µÈ´Ù. ¾Æ·¡ÀÇ ¿¹Á¦¸¦ smartzip À̶õ ÆÄÀÏ·Î ÀúÀåÇϵµ·Ï ÇÏÀÚ.
	#!/bin/sh
	ftype=`file "$1"`
	case "$ftype" in
		"$1: gzip compressed"*)
			echo "gzip ¾ÐÃà";;
		"$1: Zip archive"*)
			echo "Zip ¾ÐÃà";;
		*)
			echo "FLE $1 can not be uncompressed with smartzip";;
	easc
			
$1 º¯¼ö´Â ÇÁ·Î±×·¥ÀÇ Ã¹¹øÂ° ¾Æ±Ô¸ÕÆ®¸¦ ÀúÀåÇϰí ÀÖ´Â º¯¼ö´Ù. ivmdemo.tar.gz ÀÇ ¾ÐÃàÆ÷¸ËÀ» ¾Ë°í ½Í´Ù¸é, smartzip ivmdemo.tar.gz À̶ó°í ¸í·ÉÀ» ³»¸®¸é µÈ´Ù.

Àú À­Àå¿¡¼­ ´Ù·éÀûÀÌ ÀÖ´Â µ¡¼À ½ºÅ©¸³Æ®¸¦ case ¸¦ ÀÌ¿ëÇÏ¿© »çÄ¢¿¬»êÀ» ¼öÇàÇϵµ·Ï È®Àå½ÃÄѺ¸ÀÚ. ¹°·Ð ¾Æ·¡Àǰæ¿ì ±»ÀÌ ½ºÅ©¸³Æ®¸¦ ¸¸µéÇÊ¿ä ¾øÀÌ expr ¸¸À» »ç¿ëÇØµµ µ¿ÀÏÇÑ ÀÛ¾÷ÀÌ °¡´ÉÇÏÁö¸¸, ¾îµð±îÁö³ª case ÀÇ È°¿ë¹ý ¿¡ ´ëÇÑ ÀÌÇØ¸¦ À§ÁÖ·ÎÇÔÀÌ´Ï È¿À²¼º, °¡¿ë¼º ±âŸµîµîÀº ¹«½ÃÇÏ°í ³Ñ¾î°¡±â·Î ÇÏÀÚ.
	#!/bin/sh
	add()
	{
	    result=`expr $1 + $2`
	    echo "$1 + $2 = $result"
	}
	min()
	{
	    result=`expr $1 - $2`
	    echo "$1 - $2 = $result"
	}
	div()
	{
	    result=`expr $1 / $2`
	    echo "$1 / $2 = $result"
	}
	mul()
	{
	    result=`expr $1 \* $2`
	    echo "$1 * $2 = $result"
	}
	#echo "$1, $2"
	case $1 in
	    "-") min $2 $3 ;;
	    "+") add $2 $3 ;;
	    "/") div $2 $3 ;;
	    "*") mul $2 $3 ;;
	esac
			
À§ÀÇ ½ºÅ©¸³Æ®´Â ù¹øÂ° ¾Æ±Ô¸ÕÆ®·Î ¿¬»êÀÚ¸¦ ¹Þ¾ÆµéÀÌ°í µÎ¹øÂ° ¼¼¹øÂ° ¾Æ±Ô ¸ÕÆ®·Î °è»êÇϰíÀÚ ÇÏ´Â ¼ýÀÚ¸¦ ÀÔ·ÂÇÑ´Ù. "add - 1 3" ÀÌ·±½ÄÀ¸·Î »ç¿ëÇÏ¸é µÈ´Ù. ÁÖÀÇÇÒ Á¡Àº °ö¼À(*) ¿¬»êÀ» »ç¿ëÇÒ °æ¿ì "\" µîÀ» »ç¿ëÇØ¼­ "add \* 1 3" Çü½ÄÀ¸·Î ½á¾ßÇÑ´Ù´Â Á¡ÀÌ´Ù. ½©»ó¿¡¼­ * ´Â ¿ÍÀϵåÄ«µå È®ÀåÀ» ½ÇÇàÇϱ⠶§¹®ÀÌ´Ù.

À̹ø¿¡´Â select Á¦¾î¹®¿¡ ´ëÇØ¼­ ¾Ë¾Æº¸ÀÚ select ´Â interactive(´ëÈ­Çü) ¸Þ´º ÇÁ·Î±×·¥À» Â¥´Âµ¥ ¸Å¿ì °£´ÜÇÑ ¹æ¹ýÀ» Á¦°øÇØÁØ´Ù. »ç¿ëÀÚ°¡ ¾î¶² OS¸¦ °¡Àå ¼±È£ÇÏ´ÂÁö ¸Þ´º¸¦ º¸°í ±×Áß Çϳª¸¦ ¼±ÅÃÇÏ´Â ÇÁ·Î±×·¥À» ¸¸µé¾î º¸µµ·Ï ÇÏÀÚ.
	#!/bin/sh
	echo "What is your favourite OS ?"
	select var in "Linux" "Free BSD" "Windows" "Solaris" "Other"
	do
		break
	done
	echo "You have selected $var"
			
À§ÀÇ ½ºÅ©¸³Æ®¸¦ ½ÇÇà½ÃŰ¸é ¾Æ·¡¿Í °°Àº ¸Þ´º°¡ ¶ß°í »ç¿ëÀÚÀÇ ÀÔ·ÂÀ» ¿ä±¸ÇÏ´Â ÇÁ·ÒÇÁÆ®°¡ ´ë±â ÇÏ°Ô µÉ°ÍÀÌ´Ù.
	What is your favourite OS ?
	1) Linux
	2) Free BSD
	3) Windows
	4) Solaris
			
¿øÇÏ´Â ¿î¿µÃ¼Á¦ÀÇ ¹øÈ£(1 - 4) ¸¦ ¼±ÅÃÇÏ¸é ¼±ÅÃµÈ ¹øÈ£ÀÇ ¹®ÀÚ¿­ÀÌ var º¯¼ö¿¡ ÀúÀåµÈ´Ù. 1 À» ÀÔ·ÂÇÏ¿´´Ù¸é var º¯¼ö¿£ Linux °¡ ÀúÀå µÈ´Ù.

while Àº Á¶°ÇÀÌ ¸¸Á·ÇÏ´Â µ¿¾È ·çÇÁ¸¦ ¹Ýº¹ÇÑ´Ù.
	while ...
	do
		...
	done
			

´ÙÀ½Àº while ¸¦ »ç¿ëÇØ¼­ 1ºÎÅÍ 10±îÁö Ãâ·ÂÇÏ´Â °£´ÜÇÑ ÇÁ·Î±×·¥ÀÌ´Ù. #!/bin/sh
	a=0
	while [ $a -lt 10 ]
	do
		a=`expr $a + 1`
		echo $a
	done
		

bashsehll ¿¡¼­ÀÇ for ¹®Àº CÀÇ for ¹®°ú´Â »ç¿ë¿¡ À־ Â÷À̰¡ ³­´Ù. sehll ¿¡À־´Â in ´ÙÀ½ÀÇ °ªµéÀ» Â÷·Ê´ë·Î º¯¼ö¿¡ ÀÔ·ÂÇÏ´Â ÀÏÀ» ÇÑ´Ù.
		
	#!/bin/sh
	for var in A B C
	do
		echo "var is $var"
	done
			
for ¹®À» ÀÌ¿ëÇÑ Á»´õ À¯¿ëÇÑ ½ºÅ©¸³Æ®¸¦ ¸¸µé¾î º¸µµ·Ï ÇÏÀÚ. ¾Æ·¡ÀÇ ½ºÅ©¸³Æ®´Â ¹èÆ÷ÆÇ CD¿¡ ÇØ´ç rpmÀÌ ÀÖ´ÂÁö¸¦ È®ÀÎÇϰí, ÀÖ´Ù¸é rpm ÆÐŰÁöÀÇ Á¤º¸¸¦ º¸¿©ÁÖ´Â ÀÏÀ» ÇÑ´Ù. ¾Æ·¡ÀÇ ³»¿ëÀ» showrpm À¸·Î ÀúÀåÇϵµ·Ï ÇÏÀÚ.
	#!/bin/sh
	for rpmpackage in $*
	do
		if [ -r "$rpmpackage" ]
		then 
			echo "================ $rpmpackage ============="
			rpm -qi -p $rpmpackage
		else
			echo "ERROR: cannot read file $rpmpackage"
		fi
	done
			
À§ÀÇ ½ºÅ©¸³Æ®¸¦ º¸¸é $* À̶ó´Â º¯¼ö°¡ º¸ÀϰÍÀÌ´Ù. $*´Â ¸ðµç ¾Æ±Ô¸ÕÆ®¸¦ ÀúÀåÇÏ´Â º¯¼öÀÌ´Ù.

6.5. Quoting

	#!/bin/sh
	echo $SHELL
	echo "$SHELL"
	echo '$SHELL'
			
À§ÀÇ ½ºÅ©¸³Æ®¿¡¼­ 1¹øÂ°¿Í 2¹øÂ°ÀÇ °æ¿ì ÀÚ½ÅÀÌ »ç¿ëÇÏ´Â ½©À» Ãâ·ÂÇÏÁö¸¸ (¾Æ¸¶µµ /bin/bash) 3¹øÂ°ÀÇ °æ¿ì $SHELL ÀÚü¸¦ Ãâ·ÂÇÏ´Â°É º¼¼ö ÀÖÀ»°ÍÀÌ´Ù. ' ¸¦ »ç¿ëÇÏ¸é ½©ÀÌ »ç¿ëÇϴ Ư¼ö¹®ÀÚ(keyword)¸¦ ÀϹÝÈ­ ½ÃÄѼ­ »ç¿ëÇÒ¼ö ÀÖ´Ù. ¶ÇÇÑ ¹é½½·¯½¬¸¦ »ç¿ëÇØ¼­ ¿ÍÀϵåÄ«µå³ª º¯¼ö±âÈ£¿Í °°Àº Ư¼öÇÑ ¹®ÀÚ¸¦ ÀϹÝÈ­ ½Ãų¼öµµ ÀÖ´Ù.
	echo \$SHELL
			
À§¿¡¼­ ¹é½½·¯½¬¸¦ »ç¿ëÇÔÀ¸·Î½á $ ÀÇ Æ¯º°ÇÑ Àǹ̸¦ Á¦°Å½ÃÄÑ ¹ö¸²À¸·Î½á $SHELL À̶õ ¹®ÀÚ¿­À» Ãâ·ÂÇϵµ·Ï ¸¸µç´Ù. ¿¹¸¦ µé¾î¼­ $1,000 ¸¦ È­¸é¿¡ Ãâ·Â ½ÃŰ·Á°í ÇÑ´Ù°í °¡Á¤ÇÏÀÚ ÀÌ·²¶§ ¾Æ·¡¿Í °°ÀÌ ½á¹ö¸®¸é
	echo $1000	
			
¾Æ¹«·± °ªµµ Ãâ·ÂµÇÁö ¾ÊÀ½À» ¾Ë¼ö ÀÖ´Ù. ¿Ö³Ä¸é ½©Àº 1000 ¾Õ¿¡ $ °¡ ÀÖÀ½À¸·Î À̸¦ º¯¼ö¸íÀ¸·Î »ý°¢Çϰí ÀÌ º¯¼ö¸í¿¡ ÀúÀåµÈ °ªÀ» echo ÇÏ·Á°í ÇÒ°ÍÀ̱⠶§¹®ÀÌ´Ù. ¿ì¸®°¡ ¿øÇÏ´Â °ªÀ» ¾òÀ»·Á¸é ¾Æ·¡¿Í °°ÀÌ Äڵ带 ¼öÁ¤ÇØ¾ß ÇÑ´Ù.
	echo \$1000
			

6.6. ÇÔ¼ö

¿©·¯ºÐÀÌ Á»´õ º¹ÀâÇÑ ÇÁ·Î±×·¥À» ¸¸µé´Ùº¸¸é ÇÔ¼öÀÇ Çʿ伺À» ´À³¢°Ô µÉ°ÍÀÌ´Ù. ÇÔ¼ö¸¦ »ç¿ëÇÔÀ¸·Î½á, Á»´õ ÀÌÇØÇϱ⠽±°í ´Ü¼øÇÑ ÇÁ·Î±×·¥À» ¸¸µé¼ö ÀÖÀ¸¸ç, Àç»ç¿ëÀ» ¿ëÀÌÇϵµ·Ï ¸¸µé¼ö ÀÕ´Ù. ÇÔ¼ö´Â ´ÙÀ½°ú °°ÀÌ ¼±¾ðÇÑ´Ù.
	functionname()
	{
		body
	}
			
sehll Àº ½ºÅ©¸³Æ® ¾ð¾îÀÌ°í ¼øÂ÷ÀûÀ¸·Î ½ÇÇàÀÌ µÇ¹Ç·Î ÇÔ¼ö¸¦ »ç¿ëÇϱâ Àü¿¡ ¸ÕÀú ¼±¾ðÀ» ÇØÁÖ¾î¾ß¸¸ ÇÑ´Ù.
	#!/bin/sh
	help()
	{
		cat << HELP
	xtitle bar -- change the name of an xterm, gnome-teminal or kde konsole
	Usage: xtitlebar [-h] "string_for_titlebar"
	OPTIONS: -h help text
	EXAMPLE: xtitlebar "cvs"
	HELP	
		exit 0
	}
	[ -z "$1" ] && help
	[ "$1" = "-h" ] && help
			
ÇÔ¼ö¸¦ ÀÌ¿ëÇÑ °£´ÜÇÑ µ¡¼À ½ºÅ©¸³Æ®¸¦ ¸¸µé¾î º¸ÀÚ. 2°³ÀÇ ÀÎÀÚ¸¦ ¹Þ¾ÆµéÀ̰í À̸¦ ´õÇÑÈÄ Ãâ·ÂÇÏ´Â ÀÏÀ» ÇÑ´Ù.
	#!/bin/sh
	add()
	{
		result=`expr $1 + $2`
		echo "$1 + $2 = $result"
	}
	add $1 $2
			

6.7. ¸í·ÉÇà ÀÎÀÚ(argument)

°¢ ¸í·ÉÇà ÀÎÀÚ´Â $* °ú $1, $2, $3, ... µîÀÇ º¯¼ö¸¦ ÅëÇØ¼­ °¡Á®¿Ã¼ö ÀÖ´Ù. ±×·¯³ª ÀÌ·¯ÇÑ ¸í·ÉÇà ÀÎÀÚµéÀ» ´Ü¼øÈ÷ ÀоîµéÀÌ´Â °Í¸¸À¸·Î´Â -h ¿Í °°Àº ¸í·ÉÇà ¿É¼Ç¿¡ ´ëÇÑ ³»¿ëÀº ´Ù·ê¼ö ¾ø´Ù. ¿Ö³Ä¸é shell ¿¡¼­´Â -h ¸¦ ¿É¼ÇÀÌ ¾Æ´Ñ ÀÎÀÚ·Î Ãë±ÞÇϱ⠶§¹®ÀÌ´Ù. À̸¦ ó¸®Çϱâ À§Çؼ­´Â ¾à°°ÀÇ ±â¼úÀÌ ÇÊ¿äÇÏ´Ù. º¸Åë C¿¡¼­´Â getopt()¿Í °°Àº ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼­ ¿É¼ÇÀ» ó¸®ÇÑ´Ù. ¾Æ·¡´Â ¸í·ÉÇà ÀÎÀÚ¸¦ ºÐ¼®ÇÏ´Â ½©ÇÁ·Î±×·¥ÀÌ´Ù. ÇÁ·Î±×·¥ÀÇ À̸§Àº cmdparser ·Î ÇÏÀÚ
	#!/bin/sh
	help()
	{
		cat << HELP
		This is a generic command line parser demo.
		Usage Example : cmdparser -l hello -f somefile1 somefile2
		HELP
		exit 0
	}	

	while [ -n "$1" ]
	do
		case $1 in
			-h) help; shift1;;
			-f) opt_f=1;shift 1;;
			-l) opt_l=$2;shift 2;;
			--) shift;break;;
			-*) echo "error : no such option $1. -h for help"; exit 1;;
			*) break;
		esac
	done

	echo "opt_f is $opt_f"
	echo "opt_l is $opt_1"
	echo "first arg is $1"
	echo "2nd arg is $2"
			
shift ¶õ »õ·Î¿î ½©¸í·ÉÀÌ ³ª¿Ô´Âµ¥, ¾Æ±Ô¸ÕÆ®¸¦ Çϳª¾¿ À̵¿½ÃŰ´Â ÀÏÀ»ÇÑ´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº man bash ¸¦ ÂüÁ¶Çϱ⠹ٶõ´Ù. À§ÀÇ ½ºÅ©¸³Æ®¸¦ cmdparser -l hello -f -- -somefile1 somefiel2 ·Î ½ÇÇà½ÃÄѺ¸¸é ¾Æ·¡¿Í °°Àº °á°ú°¡ ³ª¿Ã°ÍÀÌ´Ù.
	opt_f is 1
	opt_l is hello
	first arg is -somefile1
	2nd arg is somefile2
			
À§ÀÇ ÇÁ·Î±×·¥ÀÌ ¾î¶»°Ô µ¿ÀÛÇÏ´ÂÁö ¾Ë¾Æº¸ÀÚ, À§ÀÇ ·çÇÁ´Â ¾Æ±Ô¸ÕÆ®°¡ °Ë»öµÉ¶§±îÁö °è¼ÓÇØ¼­ ¼øÈ¯Çϵµ·Ï µÇ¾î ÀÖÀ¸¸ç case ¸¦ ÀÌ¿ëÇØ¼­ ¾Æ±Ô¸ÕÆ®¿Í ´ëÀÀµÇ´Â °ªÀ» ¸ÅνÃŲ´Ù. ¸¸¾à¿¡ ¸ÅĪµÈ °ªÀ» ã¾Ò´Ù¸é, ÇØ´ç ¸í·É¾î³ª ÇÔ¼ö¸¦ ½ÇÇàÇϰí shift ¸¦ ÀÌ¿ëÇØ¼­ ÇÊ¿äÇÑ ¸¸Å­ ¾Æ±Ô¸ÕÆ®¸¦ À̵¿½ÃŲ´Ù.