ÁÖ¼®. #À¸·Î ½ÃÀÛÇÏ´Â ÁÙÀº ÁÖ¼® 󸮵˴ϴÙ. (#!¸¸ »©°í)
# ÀÌ ÁÙÀº ÁÖ¼®ÀÔ´Ï´Ù. |
¸í·É¾î ³¡¿¡´Ù ÁÖ¼®À» ÀûÀ» ¼öµµ ÀÖ½À´Ï´Ù.
echo "µÚ¿¡ ÁÖ¼®ÀÌ ºÙ½À´Ï´Ù." # ¿©±â¿¡ ÁÖ¼® ´Þ±â. |
ÁÙ ¸Ç ¾ÕÀÇ ºó Ä µÚ¿¡¼ºÎÅÍ ¾µ ¼öµµ ÀÖ½À´Ï´Ù.
# ÅÇÀÌ ÀÌ ÁÖ¼® ¾Õ¿¡ ÀÖ½À´Ï´Ù. |
경고 |
°°Àº ÁÙ¿¡¼´Â ÁÖ¼® µÚ¿¡ ¸í·É¾î°¡ ¿Ã ¼ö ¾ø½À´Ï´Ù. ÁÖ¼®°ú "½ÇÁ¦ ÄÚµå"¸¦ ±¸ºÐÇÒ ¹æ¹ýÀÌ ¾ø±â ¶§¹®¿¡ ´ÙÀ½ ¸í·É¾î´Â ´ÙÀ½ ÁÙ¿¡¼ ¾²½Ê½Ã¿À. |
¸í·É¾î ±¸ºÐÀÚ. ÇÑ ÁÙ¿¡ 2°³ ÀÌ»óÀÇ ¸í·É¾î¸¦ ¾µ ¼ö ÀÖ°Ô ÇØÁÝ´Ï´Ù.
echo hello; echo there |
;Àº °¡²û À̽ºÄÉÀÌÇÁ(¿Å±äÀÌ: Ư¼öÇÑ Àǹ̸¦ °®´Â ¹®ÀÚ¿¡¼ Ư¼öÇÑ Àǹ̸¦ ¾ø¾Ö°í ¹®ÀÚ ±× ÀÚü·Î ÀνĽÃŰ´Â ÀÏ)½Ãų Çʿ䰡 ÀÖ½À´Ï´Ù(\).
"Á¡(dot)" ¸í·É¾î. source¶õ ¸í·É¾î¿Í °°½À´Ï´Ù(예 3-44 Âü°í).
³Î ¸í·É¾î. Á¾·á »óÅ 0, Âü°ú °°À½
¹«ÇÑ ·çÇÁ:
while : do operation-1 operation-2 ... operation-n done |
if/then Å×½ºÆ® ¹®¿¡¼ Placeholder:
if condition then : # ¾Æ¹«°Íµµ ¾È ÇÏ°í °è¼Ó ÁøÇà else ¾î¶²-ÀÛ¾÷ fi |
ÀÌÁø ¿¬»êÀÌ ÇÊ¿äÇÒ ¶§ placeholder¸¦ Á¦°ø, 3.3.1절 Âü°í.
: ${username=`whoami`} # ${username=`whoami`} ¸Ç ¾ÕÀÇ : °¡ ¾øÀ¸¸é ¿¡·¯ |
"ÀÎÀÚ ¹Ù²Ù±â"¸¦ ½á¼ º¯¼öµéÀÇ ¹®ÀÚ¿À» °è»êÇÒ ¶§, 예 3-6 Âü°í:
: ${HOSTNAME?} ${USER?} ${MAIL?} |
ÇʼöÀûÀΠȯ°æ º¯¼ö°¡ Çϳª¶óµµ ¼¼Æ®µÇ¾î ÀÖÁö ¾Ê´Ù¸é ¿¡·¯ ¸Þ¼¼Áö¸¦ Ãâ·Â.
¸í·É¾î ±×·ì.
(a=hello; echo $a) |
참고: °ýÈ£·Î ¹ÀÎ ¸í·É¾îµéÀº ¼ºê ½©¿¡¼ µ¿ÀÛÇÕ´Ï´Ù(3.16절 Âü°í).
ÀÎÀÚ ¹Ù²Ù±â.
ÀÚ¼¼ÇÑ »çÇ×Àº 3.3절 Âü°í.
Áß°ýÈ£ È®Àå.
grep Linux {file?.txt,*.list} # "fileA.txt", "file2.txt", "word.list", "vegetable.list", µîÀÇ ÆÄÀÏ¿¡¼ # Linux°¡ µé¾î ÀÖ´Â °ÍÀ» ¸ðµÎ ãÀ½ |
¸í·É¾î´Â Áß°ýÈ£¼Ó, ÄÞ¸¶·Î ºÐ¸®µÈ ÆÄÀÏ ½ºÆå¿¡ µû¶ó µ¿ÀÛÇÒ °ÍÀÔ´Ï´Ù. ÆÄÀÏ ½ºÆåÀº ÆÄÀϸí È®Àå(¿ÍÀÏµå ¹®ÀÚ)ÀÌ Àû¿ëµË´Ï´Ù.
주의 |
Áß°ýÈ£ ¾È¿¡´Â °ø¹éÀÌ ¾ø¾î¾ß ÇÕ´Ï´Ù. |
ÄÚµå ºí·°. "ÀζóÀÎ ±×·ì"À̶ó°íµµ ÇÏ´Â Áß°ýÈ£ ÇÑ ½ÖÀº ½ÇÁ¦´Â À͸í ÇÔ¼ö¸¦ ¸¸µé¾î ³À´Ï´Ù. ÇÔ¼ö¿Í ºñ½ÁÇÏ°Ô ½ºÅ©¸³Æ® ³ª¸ÓÁö ºÎºÐµé°ú ºÐ¸®¸¦ ½ÃÄÑÁÝ´Ï´Ù. Áï, ºí·°¾È¿¡¼¸¸ º¸ÀÌ´Â ÀڽŸ¸ÀÇ ·ÎÄà º¯¼ö¸¦ °®½À´Ï´Ù.
ÀÌ ÄÚµå ºí·°Àº I/O ¿Í ÀçÁöÇâÀ» ÁÖ°í ¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù. I/O ÀçÁöÇâ¿¡ ´ëÇØ¼´Â 3.13절¸¦ Âü°íÇϼ¼¿ä.
예 3-2. ÄÚµå ºí·°°ú I/O ÀçÁöÇâ
#!/bin/bash { read fstab } < /etc/fstab echo "/etc/fstab ÀÇ Ã¹¹øÂ° ÁÙÀº:" echo "$fstab" exit 0 |
예 3-3. ÄÚµå ºí·°ÀÇ °á°ú¸¦ ÆÄÀÏ·Î ÀúÀåÇϱâ
#!/bin/bash # rpm-check # --------- # rpm ÆÄÀÏ¿¡ Äõ¸®¸¦ ´øÁ® ¼³¸í, ¸ñ·Ï, ¼³Ä¡ ¿©ºÎ¸¦ ¾Ë¾Æ³À´Ï´Ù. # °á°ú´Â ÆÄÀÏ·Î ÀúÀåµË´Ï´Ù. # # ÀÌ ½ºÅ©¸³Æ®´Â ÄÚµå ºí·°À» ¾î¶»°Ô ¾²´ÂÁö¸¦ º¸¿©ÁÝ´Ï´Ù. NOARGS=1 if [ -z $1 ] then echo "»ç¿ë¹ý: `basename $0` rpm-file" exit $NOARGS fi { echo echo "¾ÆÄ«ÀÌºê ¼³¸í:" rpm -qpi $1 # ¼³¸íÀ» Äõ¸®ÇÔ echo echo "¾ÆÄ«ÀÌºê ¸ñ·Ï:" rpm -qpl $1 # ¸ñ·ÏÀ» Äõ¸®ÇÔ echo rpm -i --test $1 # rpm ÆÄÀÏÀÌ ¼³Ä¡ µÉ ¼ö ÀÖ´ÂÁö¸¦ Äõ¸®ÇÔ if [ ! $? ] then echo "$1 ´Â ¼³Ä¡ µÉ ¼ö ÀÖ½À´Ï´Ù." else echo "$1 ´Â ¼³Ä¡ µÉ ¼ö ¾ø½À´Ï´Ù." fi echo } > $1.test # ÄÚµå ºí·°ÀÇ ¸ðµç °á°ú¸¦ ÆÄÀÏ·Î ÀçÁöÇâ ½Ãŵ´Ï´Ù. echo "rpm È®ÀÎ °á°ú°¡ $1.test ÆÄÀÏ¿¡ ÀúÀåµÇ¾ú½À´Ï´Ù." # rpm ¿É¼Ç¿¡ ´ëÇÑ ¼³¸íÀº rpm ¸Ç ÆäÀÌÁö¸¦ Âü°íÇϼ¼¿ä. exit 0 |
ÆÄÀÏ °æ·Î¸í. ÁÖ·Î 'find'¿¡¼ ¾²ÀÔ´Ï´Ù.
ÀçÁöÇâ.
scriptname >filename Àº scriptname ÀÇ Ãâ·ÂÀ» filenameÀ¸·Î ÀçÁöÇâÇÕ´Ï´Ù. filename ÀÌ ÀÌ¹Ì ÀÖ´Ù¸é µ¤¾î ¾¹´Ï´Ù.
command >&2 Àº command ÀÇ Ãâ·ÂÀ» Ç¥ÁØ¿¡·¯·Î ÀçÁöÇâÇÕ´Ï´Ù.
scriptname >>filename Àº scriptname ÀÇ Ãâ·ÂÀ» filename ¿¡ µ¡ºÙÀÔ´Ï´Ù. filename ÀÌ ¾ø´Ù¸é »õ·Î ¸¸µé°ÍÀÔ´Ï´Ù.
´õ ÀÚ¼¼ÇÑ »çÇ×Àº 3.13절¸¦ Âü°íÇϽʽÿÀ.
"here document"¿ë ÀçÁöÇâ. 3.24절¸¦ Âü°íÇϼ¼¿ä.
ÆÄÀÌÇÁ. ¿©·¯ ¸í·É¾îµéÀ» ¹À» ¶§ ¾²´Âµ¥, ¸í·É¾îÀÇ Ãâ·ÂÀ» ´ÙÀ½ ¸í·É¾î³ª ½©¿¡°Ô ³Ñ°ÜÁÝ´Ï´Ù.
echo ls -l | sh |
cat *.lst | sort | uniq |
참고: ÆÄÀÌÇÁ·Î ¿¬°áµÈ ¸í·É¾îÁß Çϳª°¡ Ãë¼ÒµÈ´Ù¸é Àüü ½ÇÇàÀÌ Ãë¼ÒµÇ´Âµ¥ À̸¦ broken pipe¶ó°í ÇÕ´Ï´Ù. ÀÌ ¶§ SIGPIPE ½Ã±×³ÎÀ» ¹ß»ý½Ãŵ´Ï´Ù.(½Ã±×³Î¿¡ ´ëÇØ¼´Â 3.26절 Âü°í)
°Á¦ ÀçÁöÇâ(ȯ°æ º¯¼ö noclobber°¡ ÄÑÀú ÀÖ´õ¶óµµ). ÆÄÀÏÀÌ ÀÖ´õ¶óµµ °Á¦·Î µ¤¾î ¾²°Ô ÇÕ´Ï´Ù.
Ç¥ÁØ ÀԷ¿¡¼ ȤÀº Ç¥ÁØ Ãâ·ÂÀ¸·Î ÀçÁöÇâ .
(cd /source/directory && tar cf - . ) | (cd /dest/directory && tar xvfp -) # ÇÑ µð·ºÅ丮ÀÇ Àüü ÆÄÀÏ ±¸Á¶¸¦ ´Ù¸¥ µð·ºÅ丮·Î ¿Å±è # [¾Ë¶õ ÄÛ½º(Alan Cox, a.cox@swansea.ac.uk)¿¡ °¨»ç] # # °á±¹ °°Àº µ¿ÀÛÀÌÁö¸¸ ´õ ¿ì¾ÆÇÑ ¹æ¹ý: # cd source-directory # tar cf - . | (cd ../target-directory; tar xzf -) |
bunzip2 linux-2.4.3.tar.bz2 | tar xvf - # --¾ÐÃàµÈ tar ÆÄÀÏÀ» Ǭ ´ÙÀ½ -- | --"tar"¿¡°Ô ³Ñ°ÜÁÜ-- # "tar" °¡ bunzip2¸¦ ó¸®ÇÏÁö ¸øÇÑ´Ù¸é # ÆÄÀÌÇÁ¸¦ ½á¼ µÎ ´Ü°è·Î ³ª´« ´ÙÀ½ ó¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù. # ¿©±â¼´Â bzipÀ¸·Î ¹ÀÎ Ä¿³Î ¼Ò½º¸¦ Ǫ´Â °ÍÀ» º¸¿©ÁÝ´Ï´Ù. |
"-" ´Â Bash ¿¬»êÀÚ°¡ ¾Æ´ÏÁö¸¸ ¸î¸î À¯´Ð½º À¯Æ¿¸®Æ¼¿¡¼ ÀνÄÇÏ´Â ¿É¼ÇÀÔ´Ï´Ù.
ÆÄÀϸíÀ¸·Î Ãâ·ÂÀÌ µÉ °ÍÀ» Ç¥ÁØ Ãâ·ÂÀ¸·Î ÀçÁöÇâ ½Ãŵ´Ï´Ù. (º¸Åë tar cf¿¡¼)
¹Ù·Î Àü ÀÛ¾÷ µð·ºÅ丮. cd - ´Â ¹Ù·Î Àü ÀÛ¾÷ µð·ºÅ丮·Î ¿Å°Ü°©´Ï´Ù. $OLDPWD ȯ°æ º¯¼ö°¡ Àü ÀÛ¾÷ µð·ºÅ丮 Á¤º¸¸¦ °®°í ÀÖ½À´Ï´Ù(3.7절 Âü°í).
경고 |
ÀçÁöÇâ ¿¬»êÀÚÀÎ "-" ¿Í Çò°¥¸®¸é ¾È µË´Ï´Ù. Bash°¡ »óȲ¿¡ µû¶ó ¾Ë¸Â°Ô ÇØ¼®À» ÇØ ÁÝ´Ï´Ù. |
Ȩ µð·ºÅ丮. ~terminus ´Â terminusÀÇ È¨ µð·ºÅ丮¸¦ ³ªÅ¸³»°í ls ~terminus ´Â terminus Ȩ µð·ºÅ丮 ³»¿ëÀ» º¸¿©ÁÝ´Ï´Ù. ~/ ´Â ÇöÀç »ç¿ëÀÚÀÇ È¨ µð·ºÅ丮¸¦ ³ªÅ¸³»°í ls ~/ ´Â ÇöÀç »ç¿ëÀÚ È¨ µð·ºÅ丮 ³»¿ëÀ» º¸¿©ÁÝ´Ï´Ù.
±â´ÉÀÇ ºÐ¸®, ¸í·É¾î³ª º¯¼öÀÇ ±¸ºÐ. °ø¹é ¹®ÀÚ´Â ºó Ä, ÅÇ, ºó ÁÙÀÇ Á¶ÇÕµé·Î ÀÌ·ç¾îÁ® ÀÖ½À´Ï´Ù. º¯¼ö ´ëÀÔ°°Àº »óȲ¿¡¼´Â °ø¹é ¹®ÀÚ°¡ µé¾î°£´Ù¸é ¹®¹ý ¿¡·¯°¡ »ý±æ °Ì´Ï´Ù.
ºó ÁÙÀº ½ºÅ©¸³Æ®¿¡¼ Àǹ̰¡ ¾ø±â ¶§¹®¿¡ ±â´Éº°·Î ±¸ºÐÀ» ½ÃÄѼ º¸±â ÆíÇÏ°Ô ÇÒ ¼ö ÀÖ½À´Ï´Ù.