½© ½ºÅ©¸³Æ®ÀÇ Ã¹¹ø° ¶óÀο¡´Â ´ëºÎºÐ
#!/bin/sh
¶ó´Â ¹®ÀåÀÌ Àִµ¥, ÀÌ´Â ¾î¶² ½©À» ÀÌ¿ëÇÏ¿© ÀÌ ÇÁ·Î±×·¥À» ½ÇÇà½Ãų °ÍÀÎÁö¸¦ ÁöÁ¤ÇÏ´Â °ÍÀÌ´Ù. Áï, ½ºÅ©¸³Æ®°¡ ½ÇÇàµÇ¸é /bin/sh ÇÁ·Î±×·¥ ÇÏ¿¡¼ ½ÇÇàµÊÀ» ÀǹÌÇÑ´Ù.
º¯¼ö
±×³É º¯¼ö¸íÀ» ÀûÀ¸¸é µÈ´Ù. º¯¼öÀÇ Å¸ÀÔÀ̳ª ÇüÀ» ¸í½ÃÇÏÁö ¾Ê´Â´Ù.
º¯¼ö¿¡ °ªÀ» ÇÒ´çÇÏÁö ¾Ê¾Æµµ Ưº°ÇÑ ¹®Á¦´Â ¹ß»ýÇÏÁö ¾ÊÀ¸¸ç, NULL·Î ÃʱâÈÇÏ°í ³ªÁß¿¡ °ªÀ» ÇÒ´çÇÏ·Á°í ÇÑ´Ù¸é ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù.
name=
º¯¼ö¿¡ °ªÀ» ÇÒ´çÇÒ ¶§´Â ¡®=¡¯ ±âÈ£¸¦ »ç¿ëÇϴµ¥ = »çÀÌ¿¡ °ø¹éÀ» ³ÖÀ¸¸é ¾ÈµÈ´Ù.
name=JUNGJH # ¸Â´Ù.
name = JUNGJH # Ʋ¸®´Ù.
¸¸ÀÏ ÀÔ·ÂÇÏ·Á´Â À̸§¿¡ °ø¹éÀÌ ÀÖ´Ù¸é ´ÙÀ½Ã³·³ ÇÑ´Ù.
name="JUNG J H"
¸¸ÀÏ Àμö·Î ÀԷµǴ °ªÀÌ ÀÖÀ» ¶§ À̸¦ º¯¼ö·Î ¹Þ´Â ¹æ¹ýÀº ¡®$¼ýÀÚ¡¯ ÀÌ´Ù. Áï, $1Àº ù¹ø° ÀμöÀÌ°í $2´Â µÎ¹ø° ÀμöÀÌ´Ù.
º¯¼öÀÇ ³»¿ëÀ» Ãâ·ÂÇÏ·Á¸é ¡®echo¡¯¸¦ »ç¿ëÇÑ´Ù. À̶§ º¯¼öÀÓÀ» ¾Ë¸®±â À§Çؼ $¸¦ ³Ö´Â´Ù.
echo $name
º¯¼ö¿¡ ¿ÍÀÏµå ¹®ÀÚ¸¦ ³Ö¾î¼ »ç¿ëÇÒ ¼öµµ ÀÖ´Ù.
filename=*.sh
echo $filename # È®ÀåÀÚ°¡ sh·Î µÇ¾î ÀÖ´Â ÆÄÀϵéÀÇ ¸ñ·ÏÀÌ ³ª¿Â´Ù.
º¯¼ö¸¦ ÀÌ¿ëÇÏ¿© ½ºÆ®¸µÀÇ ÀϺθ¦ º¯°æÇÒ ¼öµµ ÀÖ´Ù. ¿¹¸¦ µé¾î optionÀ̶ó´Â º¯¼ö¿¡ ¡®l¡¯¸¦ ÀÔ·ÂÇÑ ÈÄ ls –¡°$option¡± À» »ç¿ëÇϸé ls –l °ú µ¿ÀÏÇÑ ¹®ÀåÀÌ µÈ´Ù.
<¿¹. ShellTest2.sh>
½ºÅ©¸³Æ® ÆÄÀÏ ³»ºÎ¿¡¼ °³¹ßÀÚ°¡ unset Å°¿öµå·Î º¯¼ö¸¦ Á¦°ÅÇÒ ¼ö ÀÖ´Ù.
name="Jung JH"
unset name
newname=$name # newname= °ú °°´Ù.
½© ½ºÅ©¸³Æ®¿¡¼µµ »ó¼ö¸¦ ¸¸µé ¼ö ÀÖ´Ù. À̶§ »ç¿ëµÇ´Â Å°¿öµå´Â ¡®readonly¡¯ÀÌ´Ù.
readonly¸¸ ¾²¸é ÀбâÀü¿ëÀ¸·Î µÈ »ó¼öµéÀ» ¸ðµÎ ȸ鿡 Ç¥½ÃÇÑ´Ù.
Name="Jung JH"
Readonly name # ÀÌ Èķδ °ªÀ» ¹Ù²Ü ¼ö ¾ø´Ù.
½© ½ºÅ©¸³Æ®¿¡¼´Â ½© Àüü°¡ »ç¿ëÇϴ ȯ°æº¯¼öµµ ÀÏ¹Ý º¯¼ö¿Í ¶È °°Àº ¹æ¹ýÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Ù.
º¯¼ö¿¡ °ªÀ» ÇÒ´çÇÒ ¶§ ÀÔ·ÂÁÙ¿¡¼ ÀԷ¹ÞÀº ³»¿ëÀ» ÇÒ´çÇÏ´Â ¹æ¹ýÀÌ ÀÖ´Ù. Áï, ½ºÅ©¸³Æ®°¡ ½ÇÇàµÇ´Â Áß°£¿¡ º¯¼ö¿¡ ÇÒ´çÇÒ ³»¿ëÀ» »ç¿ëÀڷκÎÅÍ ÀԷ¹ÞÀº ÈÄ ±× ³»¿ëÀ» ÇÒ´çÇÏ´Â °ÍÀÌ´Ù.
À̶§ »ç¿ëÇÏ´Â Å°¿öµå°¡ ¡®read¡¯Àε¥ ÀÌ Å°¿öµå¿Í º¯¼ö¸¦ ÇÔ²² ÀûÀ¸¸é ±× ¶óÀÎÀÌ ½ÇÇàµÉ ¶§ »ç¿ëÀڷκÎÅÍ ÀÔ·ÂÇÒ °ÍÀ» ¿äûÇÏ°Ô µÈ´Ù.
<Grep.sh>
#!/bin/sh
echo "grep¿¡ »ç¿ëµÉ ¿É¼Ç ÀÔ·Â, -l ¶Ç´Â -s¸¦ ÀÔ·ÂÇØÁÖ¼¼¿ä."
read option1
echo "°Ë»öÇÏ°íÀÚ ÇÏ´Â ¹®ÀåÀ» ÀÔ·ÂÇØÁÖ¼¼¿ä"
read option2
grep $option1 $option2 *
½©¿¡¼ »ç¿ëµÇ´Â ƯÁ¤ Å°¿öµå´Â ´ÙÀ½°ú °°´Ù.
$# - ¸í·ÉÀÔ·Â ¶óÀο¡¼ ÀÔ·ÂµÈ ÀμöÀÇ °³¼ö¸¦ °¡Áö°í ÀÖ´Ù.
$* - ¸í·ÉÀÔ·Â ¶óÀο¡¼ ÀÔ·ÂµÈ ÀüüÀÇ ³»¿ëÀ» Æ÷ÇÔÇÑ´Ù. Áï, $1 ~ $nÀ» ¸ðµÎ ÇÕÄ£°Í°ú °°´Ù.
$$ - ½© ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÇ¸é¼ »ç¿ëµÈ ÇÁ·Î¼¼½ºÀÇ ID °ªÀ» °¡Áø´Ù.
$! - ½© ÇÁ·Î±×·¥ÀÌ ½ÇÇà½ÃŲ ¹é±×¶ó¿îµå ÇÁ·Î¼¼½ºÀÇ ID °ªÀ» °¡Áø´Ù.
<¿¹. shellTest.sh>
À§ÀÇ Å°¿öµå¸¦ »ç¿ëÇÑ ´Ù¾çÇÑ ÀÀ¿ëÀ» ÇÑ´Ù.
¡®set¡¯ ¸í·É¾î¸¦ ÀÌ¿ëÇϸé ÇöÀç ½©¿¡¼ »ç¿ëµÇ°í ÀÖ´Â º¯¼öµéÀÇ ¸®½ºÆ®¸¦ È®ÀÎÇÒ ¼ö ÀÖ´Ù.
<¿¹. shellTest4.sh>
½©ÀÇ È¯°æº¯¼ö¸¦ ¸î°¡Áö È®ÀÎÇÑ´Ù.
½©¿¡¼ º¯¼ö¸¦ »ç¿ëÇÒ ¶§ º¯¼ö¿¡ °ªÀ» ÇÒ´çµÈ °æ¿ì¿¡´Â º¯¼ö°¡ °¡Áø °ªÀ» »ç¿ëÇÏ°í, ±×·¸Áö ¾ÊÀ¸¸é µðÆúÆ®ÀÇ ´Ù¸¥°ªÀ» È°¿ëÇÏ´Â ¹æ¹ýÀÌ ÀÖ´Ù.
´õ ³ª¾Æ°¡ ÁöÁ¤ÇÑ ³»¿ëÀ» °ªÀÌ ÇÒ´çµÇÁö ¾ÊÀº º¯¼ö¼Ó¿¡ ÇÒ´çÇÏ´Â ¹æ¹ýµµ ÀÖ´Ù.
${X:-Y} # X¿¡ °ªÀÌ ÀÖÀ¸¸é ±×´ë·Î, ±×·¸Áö ¾ÊÀ¸¸é Y¸¦ »ç¿ë, X°ª º¯µ¿¾øÀ½
${X:=Y} # Y°¡ »ç¿ëµÇ°í ³ ÈÄ X¿¡ Y°ª ÇÒ´ç
${X:?¿¡·¯¸Þ½ÃÁö} # X¿¡ °ªÀÌ ¾øÀ¸¸é ¿¡·¯¸Þ½ÃÁö¿Í ÇÔ²² Á¾·á
<¿¹. shellTest4.sh>
À§ÀÇ ¿¹¸¦ È°¿ëÇÑ´Ù.
Á¦¾î¹®(Á¶°Ç¹®)
½©¿¡¼ ¸í·É¾îµéÀ» ¼øÂ÷ÀûÀ¸·Î ½ÇÇàÇÒ ¶§ ¡®||¡¯ ¿¬»êÀÚ¿Í ¡®&&¡¯ ¿¬»êÀÚ¸¦ ÀÌ¿ëÇÏ¿© ¿¬»êÀÚ ¹Ù·Î µÚ¿¡ À§Ä¡ÇÑ ¸í·É¾î°¡ Á¶°Ç¿¡ µû¶ó ½ÇÇàµÇµµ·Ï ¸¸µé ¼ö ÀÖ´Ù.
'||¡¯ ¿¬»êÀÚ´Â ¾ÕÀÇ ¸í·É¾î°¡ ½ÇÆÐÇßÀ» ¶§¸¸ µÚ¿¡ À§Ä¡ÇÑ ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÇµµ·Ï ÇÑ´Ù.
¡®&&¡¯ ¿¬»êÀÚ´Â ¹Ý´ë·Î ¾ÕÀÇ ¸í·É¾î°¡ ¼º°øÀûÀ¸·Î ¼öÇàµÇ¾úÀ» ¶§¸¸ µÚÀÇ ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÈ´Ù.
´ÙÀ½Àº ¸í·É¾î ½ÇÇàÀÌ ½ÇÆÐÇßÀ» ¶§ ÀÌ ³»¿ëÀ» ·Î±×·Î ³²±â´Â ÀÛ¾÷ÀÌ´Ù.
Run Command1 || echo ù¹ø° ¸í·É ½ÇÇà ½ÇÆÐ >> log.txt
Run Command2 || echo µÎ¹ø° ¸í·É ½ÇÇà ½ÇÆÐ >> log.txt
¶ÇÇÑ ´ÙÀ½Àº ½ÇÆа¡ ¿¹»óµÇ´Â ¸í·É¿¡ ´ëÇÑ º¸¿Ï ½ÇÇàÀÌ´Ù.
ShellTest5.sh || chmod 755 ShellTest5.sh && ShellTest5.sh
If-else ±¸¹®ÀÇ Çü½ÄÀº ´ÙÀ½°ú °°´Ù.
if [ conditons ]
then
½ÇÇàÇÏ°íÀÚ ÇÏ´Â ¹®Àå
fi
#########
if [ conditons ]
then
Á¶°Ç¸¸Á·½Ã ½ÇÇàÇÏ°íÀÚ ÇÏ´Â ¹®Àå
else
Á¶°Ç ºÒ¸¸Á·½Ã ½ÇÇàÇÏ°íÀÚ ÇÏ´Â ¹®Àå
fi
##########
if [ conditons ]
then
Á¶°Ç¸¸Á·½Ã ½ÇÇàÇÏ°íÀÚ ÇÏ´Â ¹®Àå
elif [ conditons ]
µÎ¹ø° Á¶°Ç ¸¸Á·½Ã ½ÇÇà ¹®Àå
else
Á¶°Ç ºÒ¸¸Á·½Ã ½ÇÇàÇÏ°íÀÚ ÇÏ´Â ¹®Àå
fi
<¿¹. IfTest1.sh>
if Á¶°Ç¹®¿¡¼ »ç¿ëµÇ´Â ¿¬»êÀڵ鿡´Â ´ÙÀ½°ú °°Àº °ÍµéÀÌ ÀÖ´Ù.
l ¹®Àڿüũ
[ stringName ] - ¹®ÀÚ¿ÀÌ ³Î(NULL)ÀÎÁö üũ, NullÀÌ ¾Æ´Ï¸é Âü
[ -n stringName ] - ¹®ÀÚ¿ÀÇ »çÀÌÁî°¡ 0 ÀÌ»óÀÎÁö üũ, 0 ÀÌ»óÀ̸é Âü
[ -z stringName ] - ¹®ÀÚ¿ÀÇ »çÀÌÁî°¡ 0 ÀÎÁö üũ, 0À̸é Âü
[ stringNameA = stringNameB ] - A¹®ÀÚ¿°ú B¹®ÀÚ¿ÀÌ °°ÀºÁö üũ, °°À¸¸é Âü
[ stringNameA != stringNameB ] - A¹®ÀÚ¿°ú B¹®ÀÚ¿ÀÌ ´Ù¸¥Áö üũ, ´Ù¸£¸é Âü
l ¼ýÀÚ ´ë¼Ò °ü°è üũ
[ intA -ge 100 ] - ¼ýÀÚ A°¡ 100º¸´Ù Å©°Å³ª °°ÀºÁö üũ, 100 ÀÌ»óÀ̸é Âü
[ intA -gt 100 ] - ¼ýÀÚ A°¡ 100º¸´Ù Å«Áö üũ, 100ÀÌ ³ÑÀ¸¸é Âü
[ intA -le 100 ] - ¼ýÀÚ A°¡ 100º¸´Ù À۰ųª °°ÀºÁö üũ, 100 ÀÌÇÏÀ̸é Âü
[ intA -lt 100 ] - ¼ýÀÚ A°¡ 100º¸ÀÚ ÀÛÀºÁö üũ, 100 ¹Ì¸¸À̸é Âü
l ÆÄÀÏ Ã¼Å©
[ -r filename ] - ÇØ´ç ÆÄÀÏÀÌ Àб⠰¡´ÉÇÑÁö üũ
[ -w filename ] - ÇØ´ç ÆÄÀÏÀÌ ¾²±â °¡´ÉÇÑÁö üũ
[ -x filename ] - ÇØ´ç ÆÄÀÏÀÌ ½ÇÇà °¡´ÉÇÑÁö üũ
[ -s filename ] - ÇØ´ç ÆÄÀÏÀÇ »çÀÌÁî°¡ Á¦·Î ÀÌ»óÀÎÁö üũ
[ -d filename ] - ÇØ´ç ÆÄÀÏÀÌ µð·ºÅ丮 ÆÄÀÏÀÎÁö üũ
[ -f filename ] - ÇØ´ç ÆÄÀÏÀÌ º¸Åë ÆÄÀÏÀÎÁö üũ
[ -h filename ] - ÇØ´ç ÆÄÀÏÀÌ ¸µÅ© ÆÄÀÏÀÎÁö üũ
l Á¶°Ç¹®ÀÇ °áÇÕ
[ Á¶°Ç¹®A -a Á¶°Ç¹®B ] - Á¶°Ç¹® A¿Í B°¡ ¸ðµÎ ÂüÀÎÁö üũ, -a´Â AND
[ Á¶°Ç¹®A -o Á¶°Ç¹®B ] - Á¶°Ç¹® A¿Í BÁß ÂüÀÌ Çϳª¶óµµ ÀÖ´ÂÁö üũ, -o´Â OR
<¿¹. IfTest2.sh>
case¹®µµ Á¦°øÀ» Çϴµ¥ Çü½ÄÀº ´ÙÀ½°ú °°´Ù.
case $º¯¼ö¸í in
¹®Àå1)
ù¹ø° ¸í·É¾î;;
¹®Àå2)
µÎ¹ø° ¸í·É¾î;;
¹®Àå3)
¼¼¹ø° ¸í·É¾î;;
*)
Default ¸í·É¾î;;
esac
<¿¹. caseTest.sh>
Á¦¾î¹®(¹Ýº¹¹®)
while¹®ÀÇ Çü½ÄÀº ´ÙÀ½°ú °°´Ù.
while [ Á¶°Ç ]
do
¸í·É¾î ±¸¹®
done
<¿¹. whileTest.sh>
#!/bin/sh
while [ $# -gt 0 ]
echo "< $1 ¸í·É ½ÇÇà > "
$1
Shift
done
À§ÀÇ ¿¹Á¦¿¡¼ shift ¸í·É¾î¸¦ »ç¿ëÇϴµ¥. Shift´Â Àμö·Î µé¾î¿Â ³»¿ëÀ» Çϳª¾¿ ¿Å°Ü°¡´Â ±â´ÉÀ» ÇÑ´Ù. Áï, shift°¡ Çѹø ½ÇÇàµÇ¸é $1Àº $2ÀÌ µÇ°í $2´Â $3ÀÌ µÈ´Ù.(???)
until ±¸¹®°ú ºñ±³Çغ¸¶ó..
#!/bin/sh
until [ $# -le 0 ]
echo "< $1 ¸í·É ½ÇÇà > "
$1
Shift
done
for ±¸¹®ÀÇ Çü½ÄÀº ´ÙÀ½°ú °°´Ù.
for º¯¼ö¸í in value1 value2 ...
do
¹Ýº¹ ½ÇÇà ¹®Àå
done
while/until ¿¡¼ »ç¿ëÇÑ ¿¹Á¦¸¦ for·Î º¯°æÇÏ¸é ´ÙÀ½°ú °°´Ù.
#!/bin/sh
for variable in $* # $* : Àμö·Î µé¾î¿Â ¸ðµç ¹®ÀÚ¿
do
echo ¡°< $variable ¸í·É ½ÇÇà>¡±
$variable
done
for Å°¿öµå µÚ¿¡ º¯¼ö¸í(variable)ÀÌ ¿À°í in Å°¿öµå µÚ¿¡ °ªµéÀÌ ³ª¿µÈ´Ù. ÀÌ°ÍÀº in µÚ¿¡ ÀÖ´Â °ªÀÌ Çϳª¾¿ variable¿¡ ÇÒ´çÀÌ µÇ¸é¼ °ªÀÇ ÇÒ´çÀÌ ³¡³¯¶§±îÁö do~done¸¦ ¹Ýº¹ÇÑ´Ù.
<¿¹. breakContinue.sh>
<¿¹. runCmd>
¿©·¯ °³ÀÇ ½© ¸í·É¾î¸¦ ÇѲ¨¹ø¿¡ ½ÇÇàÇϵµ·Ï ¸¸µé¾î ÁÖ´Â ¿¹Á¦
½© ¸í·É¾î°¡ ¿É¼ÇÀÌ ÀÖ´ÂÁö ¿©ºÎ¸¦ üũÇÏ°í, ¿É¼ÇÀÌ ÀÖÀ¸¸é ¿É¼Ç°úÇÔ²² ¸í·É¾î¸¦ ½ÇÇàÇÏ°í ¿É¼ÇÀÌ ¾øÀ¸¸é ¸í·É¾î¸¸ ½ÇÇàÇϴµ¥, À̸¦ À§ÇØ while¹®°ú ´ÙÁß if¹®, case¹®À» »ç¿ëÇÑ´Ù.
ÇÔ¼ö ÀÛ¼º
ÇÔ¼ö¸¦ »ç¿ëÇÏ·Á¸é ½ºÅ©¸³Æ®ÀÇ ½ÃÀۺο¡ Á¤ÀÇ°¡ µÇ¾î ÀÖ¾î¾ß ÇÑ´Ù.
ÇÔ¼öÀÇ Çü½ÄÀº ´ÙÀ½°ú °°´Ù.
ÇÔ¼ö¸í()
{
ÇÔ¼ö ³»¿ë
}
ÇÔ¼ö È£ÃâÀº ÀÎÀÚ°¡ ¾ø´Â ÇÔ¼ö´Â ÇÔ¼ö¸í¸¸ È£ÃâÇÏ¸é µÇ°í, ÀÎÀÚ°¡ ÀÖ´Â ÇÔ¼ö´Â ÇÔ¼ö¸í µÚ¿¡ ÀÎÀÚ¸¦ ³ª¿ÇØÁÖ¸é µÈ´Ù.( °ýÈ£´Â ¾²Áö ¾Ê´Â´Ù.)
ÇÔ¼ö ³»ºÎ¿¡¼ ³Ñ°Ü¹ÞÀº ÀÎÀÚ¸¦ ¾²´Â ¹æ¹ýÀº ½© ÇÁ·Î±×·¥ÀÌ ÀÎÀÚ¸¦ ¾²´Â ¹æ¹ý°ú °°´Ù.($1, $2, ¡¦)
[Ãâó] [Á¤¸®]½© ½ºÅ©¸³Æ® ÇÁ·Î±×·¡¹Ö1. ¹®¹ý|ÀÛ¼ºÀÚ Åõ´õ¸®
|