|
µé¾î°¡¸ç
½© ½ºÅ©¸³Æ®¶õ ½©¿¡¼ »ç¿ëÇÒ ¼ö
ÀÖ´Â ¸í·É¾îµéÀÇ Á¶ÇÕÀ» ¸ð¾Æ¼ ¸¸µç ¹èÄ¡(batch) ÆÄÀÏÀÌ´Ù. ¸®´ª½º¿¡¼´Â ¿©·¯
¸í·É¾îµéÀ» ÆÄÀÌÇÁ(pipe), ¸®´ÙÀÌ·º¼Ç(redirection), ÇÊÅÍ(filter)
µîÀ¸·Î ¿¬°áÇÏ¿© ¿øÇÏ´Â °á°ú¸¦ ¾ò¾î ³¾ ¼ö ÀÖ´Ù. ÀÌ·± ¹æ½ÄÀ¸·Î ¹¿©Áø ¸í·É¾î
Á¶ÇÕÀÌ ¹Ýº¹ÀûÀ¸·Î »ç¿ëµÈ´Ù¸é À̸¦ ½© ½ºÅ©¸³Æ®·Î, Áï ´ÜÀÏ ¸í·ÉÀ¸·Î ¸¸µé¾î ½±°Ô
»ç¿ëÇÒ ¼ö ÀÖ´Ù.
½ºÅ©¸³Æ®¶ó°í ÇÏ´Â °ÍÀº ÀÎÅÍÇÁ¸®ÅÍ(interpreter)¿¡
ÀÇÇØ ÇØ¼®/½ÇÇàµÇ´Â ÇÁ·Î±×·¥À» ¸»ÇÑ´Ù. ¾î¶² Á¾·ùÀÇ ÀÎÅÍÇÁ¸®Å͸¦ »ç¿ëÇÏ´Â °¡¿¡
µû¶ó¼ ¾î¶² ½ºÅ©¸³Æ®Àΰ¡¿¡ ´ëÇÑ À̸§ÀÌ Á¤ÇØÁø´Ù. ½© ½ºÅ©¸³Æ®, ÆÞ(Perl)
½ºÅ©¸³Æ®, Tcl/Tk ½ºÅ©¸³Æ® µîÀÇ À̸§¿¡¼ »ç¿ëÇÏ´Â ÀÎÅÍÇÁ¸®Å͸¦ ¾Ë ¼ö ÀÖ´Ù.
½© ½ºÅ©¸³Æ®´Â ÀÎÅÍÇÁ¸®ÅÍ·Î ½©À» »ç¿ëÇÏ´Â ½ºÅ©¸³Æ®¸¦ °¡¸£Å²´Ù. ¶ÇÇÑ ¾î¶°ÇÑ ½©À»
»ç¿ëÇÏ´Â °¡¿¡ µû¶ó¼ º»(bourne) ½© ½ºÅ©¸³Æ®, C ½© ½ºÅ©¸³Æ®, ÄÜ(Korn)
½© ½ºÅ©¸³Æ®, TC ½© ½ºÅ©¸³Æ® µîÀ¸·Î ³ª´¶´Ù.
ÀÌ ¿¬Àç¿¡¼´Â ½© ½ºÅ©¸³Æ® ÁßÀÇ
±âº»ÀÌ µÇ´Â º» ½© ½ºÅ©¸³Æ®¿¡ ´ëÇØ¼ »ìÆìº¼ °ÍÀÌ´Ù. º» ½© ½ºÅ©¸³Æ®¿¡¼ »ç¿ëÇÏ´Â
±â´É°ú ¹®¹ýÀº ´Ù¸¥ ½©¿¡¼µµ Áö¿øÀÌ µÈ´Ù. µû¶ó¼ ½ÇÁ¦ »ç¿ëÇÒ ¶§´Â ´Ù¸¥ ½©À»
»ç¿ëÇÒ ¼öµµ ÀÖÀ» °ÍÀÌ´Ù. ÇÊÀÚ´Â bash 1.14.7À» »ç¿ëÇÏ¿© ¼³¸íÀ» ÇÒ °ÍÀÌ´Ù.
¾î¶² °ÍÀÌ ½© ½ºÅ©¸³Æ®?
¿ì¸®´Â ¾Ë°Ô ¸ð¸£°Ô ¸¹Àº ½© ½ºÅ©¸³Æ®À»
»ç¿ëÇÑ´Ù. ±×·¸´Ù¸é ¾î¶² °ÍÀÌ ½©½ºÅ©¸³Æ®Àΰ¡? È®ÀÎÀ» ÇØº¸´Â ¹æ¹ýÀº file¿Í
grep¸í·ÉÀ» »ç¿ëÇØ¼ ã¾Æº¸´Â °ÍÀÌ´Ù. ÇÊÀÚÀÇ ½Ã½ºÅÛ¿¡¼ÀÇ °á°ú´Â ´ÙÀ½°ú °°´Ù.
$ (cd /bin
; file * |grep ¡°shell script¡±)
false : Bourne
shell script text
igawk : Bourne
shell script text
remadmin : Bourne
shell script text
true : Bourne
shell script text
$ (cd /usr/bin ; file * |grep ¡°shell
script¡±)
anytopnm : Bourne
shell script text
apropos : Bourne
shell script text
audiocompose : C shell
script text
audiosend : C
shell script text
autoconf : Bourne
shell script text
autoheader : Bourne
shell script text
autoreconf : Bourne
shell script text
autoupdate : Bourne
shell script text
bash2bug : Bourne
shell script text
bashbug : Bourne
shell script text
batch : Bourne
shell script text
bdftops : Bourne
shell script text
bzless : Bourne
shell script text
......
whatis : Bourne
shell script text
wv-incconfig : Bourne
shell script text
wv-libconfig : Bourne
shell script text
xbm2ikon : Bourne
shell script text
xbmcut48 : Bourne
shell script text
xbmsize48 : Bourne
shell script text
zcmp : Bourne
shell script text
zdiff : Bourne
shell script text
zforce : Bourne
shell script text
zgrep : Bourne
shell script text
zipgrep : Bourne
shell script text
zless : Bourne
shell script text
zmore : Bourne
shell script text
znew : Bourne
shell script text
|
À§ÀÇ ¸í·ÉÀ¸·Î È®ÀÎÀ» ÇØº¸¸é false,
true, apropos, netscape, nohup, pdf2ps, ps2pdf,
whatis, zgrep, zless µî ¸¹Àº ½© ½ºÅ©¸³Æ®°¡ ÀÖÀ½À» ¾Ë ¼ö ÀÖ´Ù.
½© ½ºÅ©¸³Æ® ÀÛ¼ºÇϱâ
½ºÅ©¸³Æ®ÀÇ Æ¯Â¡ ÁßÀÇ Çϳª´Â ±×
³»¿ëÀÌ ÅØ½ºÆ® Çü½ÄÀ̱⠶§¹®¿¡ ÀÏ¹Ý ÆíÁý±â·Î º¼ ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù. À§¿¡¼ ã´Â
½ºÅ©¸³Æ® Áß ¾Æ¹« °ÍÀ̳ª cat, vi, emacs µîÀ¸·Î º¸¾Æ¶ó. ¿©·¯ ¸í·Éµé°ú
½ºÅ©¸³Æ® ¹®¹ýÀÇ Á¶ÇÕÀ¸·Î µÇ¾î ÀÖ´Â °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù.
½ºÅ©¸³Æ®ÀÇ °¡Àå ùÁÙÀº Ç×»ó #!·Î
½ÃÀÛÇÑ´Ù. #! ´ÙÀ½¿¡´Â ÀÌ ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÒ ÀÎÅÍÇÁ¸®ÅÍ¿Í ±× ½ÇÇà ¿É¼ÇÀ» ÁöÁ¤ÇÑ´Ù.
½© ½ºÅ©¸³Æ®¿¡¼´Â #!/bin/sh, #!/bin/csh, #!/bin/bash,
#!/bin/ksh, #!/bin/tcsh¿Í °°ÀÌ ½©ÀÇ Àý´ë °æ·Î¸¦ ½áÁØ´Ù. ÀüÅëÀûÀÎ
°ü½À¿¡ ÀÇÇÏ¿© #!¸¸ ½áÁÙ °æ¿ì¿¡´Â #!/bin/sh·Î ÀνÄÀ» ÇÑ´Ù.
µû¶ó¼ º» ½© ½ºÅ©¸³Æ® ÀÛ¼º½Ã¿¡´Â ù ÁÙÀº #!/bin/sh³ª #!·Î ÇÏ¸é µÈ´Ù.
ÀÌÁ¦ ¾ÕÀÇ ¿¹Á¦¸¦ ¹ÙÅÁÀ¸·Î °£´ÜÇÑ
¡®findscript¡¯ ½© ½ºÅ©¸³Æ®¸¦ ÀÛ¼ºÇÏ¿© º¸ÀÚ. ÀÌ ½ºÅ©¸³Æ®´Â /bin,
/usr/bin¿¡¼ ½© ½ºÅ©¸³Æ®¸¦ ã¾Æ º¸¿©ÁØ´Ù.
$ cat findscript
#!/bin/sh#
# findscript: /bin, /usr/bin¿¡ ÀÖ´Â ½© ½ºÅ©¸³Æ®¸¦
ã´Â´Ù.
#
(cd /bin;
file * | grep ¡°shell script¡±)
(cd /usr/bin; file * | grep ¡°shell script¡±)
$ chmod +x findscript.sh
$ ./findscript.sh
|
cat ¶Ç´Â ´Ù¸¥ ÆíÁý±â¸¦ ÀÌ¿ëÇÏ¿©
À§¿¡¼ ó·³ ÀÛ¼ºÀ» Çϰí, ½ÇÇà °¡´ÉÇϵµ·Ï ÆÛ¹Ì¼ÇÀ» ÁØ´Ù. ±×¸®°í¼ ´Ù¸¥ ÇÁ·Î±×·¥
ó·³ ½ÇÇàÀ» ÇÏ¸é µÈ´Ù. À§¿¡¼ º» °Í°ú °°ÀÌ ±âº»ÀûÀ¸·Î ½© ½ºÅ©¸³Æ®´Â ½©¿¡¼
»ç¿ëÇÒ ¼ö ÀÖ´Â ¸í·ÉµéÀÇ ÁýÇÕÀÌ´Ù. ¿©±â¿¡ µ¡ºÙ¿© ½©¿¡¼´Â ½© ½ºÅ©¸³Æ®¿¡¼ »ç¿ëÇÒ
¼ö ÀÖ´Â ³ª¸§ÀÇ ¹®¹ýÀ» Á¦°øÇÑ´Ù.
Á¾·á »óÅ (Exit status)
°¢ ¸í·ÉµéÀº ½ÇÇàÀ» ¿Ã¹Ù·Î ¸¶Ä¡°í
Á¤»óÀûÀÎ Á¾·á(¼º°ø/Âü)Çϰųª, ½ÇÇà ¿À·ù ¶Ç´Â ÀÎÅÍ·´Æ®¿¡ ÀÇÇÑ Áߴܰú °°Àº ÀÌÀ¯·Î
ºñÁ¤»óÀûÀ¸·Î Á¾·á(½ÇÆÐ/°ÅÁþ)ÇÒ ¼ö ÀÖ´Ù. ÀÌ ¼º°ø°ú ½ÇÆÐ´Â ¸í·ÉÀÇ Á¾·á »óŰªÀ¸·Î
¾Ë ¼ö ÀÖ´Ù. º¸Åë 0Àº ¼º°øÀ» ³ªÅ¸³»¸ç, 0ÀÌ ¾Æ´Ñ °ªÀº ½ÇÆÐ¸¦ ³ªÅ¸³½´Ù. ½©¿¡¼´Â
ÀÌÀü¿¡ ½ÇÇàÇÑ ¸í·ÉÀÌ ¼º°øÀ» ÇÏ¿´´ÂÁö ½ÇÆÐ¸¦ ÇÏ¿´´ÂÁö¸¦ ? º¯¼ö°ª¿¡ ÀúÀåÀ» ÇÑ´Ù.
$ who | grep
root
$ echo $?
1
$ who | grep hermes44
hermes44 : 0 Sep
16 11:34
hermes44 pts/0 Sep
16 11:36
hermes44 pts/1 Sep
16 14:07
$ echo $?
0
$ false; echo $?
1
$ true; echo $?
0
|
false ¸í·ÉÀº Ç×»ó 1, ½ÇÆÐÀÇ
Á¾·á »óŸ¦ ¹ÝȯÇϰí true ¸í·ÉÀº Ç×»ó 0, ¼º°øÀÇ Á¾·á »óŸ¦ ¹ÝȯÇÑ´Ù.
½© ½ºÅ©¸³Æ®¿¡¼´Â exit¸¦ ÀÌ¿ëÇÏ¿©
½ºÅ©¸³Æ®¸¦ Á¾·áÇÏ¸é¼ Á¾·á »óŸ¦ ¹ÝȯÇÒ ¼ö ÀÖ´Ù. exit¸¸À» »ç¿ëÇÏ¸é ½© ½ºÅ©¸³Æ®¸¦
Á¾·áÇÏ°í °¡Àå ¸¶Áö¸·¿¡ ½ÇÇàÇÑ ¸í·ÉÀÇ Á¾·á »óŸ¦ ¹ÝȯÇϰí, exit <¼ýÀÚ>¸¦
»ç¿ëÇϸé Á¾·áÇϰí <¼ýÀÚ> °ªÀ» ½©¿¡ ¹ÝȯÇÑ´Ù.
$ cat return_exit
#!/bin/sh
#
#return_exit: <ÀÎÀÚ>ÀÇ °ªÀ» Á¾·á »óÅ·Î
#¹ÝȯÇÑ´Ù.
#
if [ $# -eq
0 ]
then
exit
else
exit
$1
fi
$ ./return_exit; echo $?
0
$ ./return_exit 8; echo $?
8
|
if ±¸¹®Àº Á¶°Ç½Ä¿¡ µû¶ó¼
ºÐ±â¸¦ ÇÑ´Ù.
Çü½ÄÀº ´ÙÀ½°ú °°´Ù.
if Á¶°Ç½Ä
then
¸í·Éµé
[ elif Á¶°Ç½Ä
then
¸í·Éµé
]
[ else
¸í·Éµé
]
fi
ifÀÇ Á¶°Ç½ÄÀÌ ÂüÀ̸é, Áï 0À»
¹ÝȯÇϸé then ´ÙÀ½ÀÇ ¸í·ÉµéÀ» ¼öÇàÇϰí, °ÅÁþÀ̸é, Áï 0ÀÌ ¾Æ´Ñ °ªÀ» ¹ÝȯÇϸé
(´ë°³ 1ÀÌ´Ù) else ´ÙÀ½ÀÇ ¸í·ÉÀ» ¼öÇàÇÑ´Ù. elif´Â ifÀÇ Á¶°Ç½ÄÀÌ
°ÅÁþÀÌ µÉ °æ¿ì¿¡ ºÐ±âµÇ¾î ´Ù½Ã »õ·Î¿î Á¶°Ç½ÄÀ» °Ë»çÇÑ´Ù. elif³ª else
±¸¹®Àº »ý·«ÀÌ °¡´ÉÇÏ´Ù. fi´Â if ±¸¹®ÀÇ ³¡Àº ³ªÅ¸³½´Ù. (fi´Â if¸¦ °Å²Ù·Î
¾´ °ÍÀÌ´Ù. :-))
À§ÀÇ ¿¹Á¦ ½ºÅ©¸³Æ®¿¡¼ if Á¶°Ç¹®ÀÇ
[ $# -eq 0 ]´Â ½ºÅ©¸³Æ®ÀÇ ÀÎÀÚÀÇ °¹¼ö($#)°¡ 0°ú °°ÀºÁö(-eq)¸¦
°Ë»çÇÏ´Â °ÍÀÌ´Ù. ÀÎÀÚ°¡ ¾ø´Ù¸é exit¸¦ ¼öÇàÇÏ°í ¸¶Áö¸·À¸·Î ¼öÇàÇÑ ¸í·ÉÀÎ Á¶°Ç½ÄÀÇ
Á¾·á »óŰª 0À» ¹ÝȯÇÏ´Ù. ÀÎÀÚ°¡ ÀÖ´Ù¸é else ±¸¹®¿¡¼ ù¹øÂ° ÀÎÀÚ °ªÀ»($1)À»
Á¾·á »óÅ·Π¹ÝȯÇÑ´Ù.
½© ½ºÅ©¸³Æ®°¡ ¼öÇ൵Áß¿¡ ÀÎÅÍ·´Æ®¸¦
¹Þ¾Æ¼ ºñÁ¤»óÀûÀ¸·Î Á¾·áÇÒ ¼öµµ ÀÖ´Ù. ÀÌ·± °æ¿ì¿¡´Â Àӽ÷Π»ç¿ëÇÑ ÆÄÀÏÀ» »èÁ¦ÇÏ´Â
°Í°ú °°Àº Á¤¸® ÀÛ¾÷À» ¼öÇàÇÒ ¼ö ¾ø°ÔµÈ´Ù. À̸¦ ¹æÁöÇϱâ À§ÇÑ trap ±¸¹®ÀÌ
ÀÖ´Ù. Çü½ÄÀº ´ÙÀ½°ú °°´Ù.
ÀÎÅÍ·´Æ®¿¡ ÇØ´çÇÏ´Â ½Ã±×³Î ¹øÈ£¸¦
½áÁØ´Ù. ÀÌ ¹øÈ£´Â kill -lÀ» ÇÏ¸é ¾Ë ¼ö ÀÖ´Ù.½Ã±×³Î ¹øÈ£¸¦ 0À» ¾µ °æ¿ì´Â
½© ½ºÅ©¸³Æ®°¡ Á¤»óÀûÀÎ Á¾·á¸¦ ÇÒ °æ¿ì¸¦ ³ªÅ¸³½´Ù.
¾Æ·¡ÀÇ ½© ½ºÅ©¸³Æ®¸¦ ¼öÇàÇϸé loop
¶ó´Â ±Û¾¾°¡ ȸ鿡 °è¼Ó Ãâ·ÂµÉ °ÍÀÌ´Ù. ¿©±â¼ »ç¿ëµÈ whileÀº ¹«ÇÑ ·çÇÁ¸¦
µ¹°Ô µÈ´Ù. ·çÇÁ¿¡ ´ëÇØ¼´Â µÚ¿¡¼ º¸°Ú´Ù. Á¾·á¸¦ Çϱâ À§Çؼ Ctrl+C(SIGINT,2)¸¦
´©¸£´õ¶óµµ À̴ ù¹øÂ° trap ±¸¹®¿¡ ÀÇÇØ¼ ¸Þ¼¼Áö¸¸À» Ãâ·ÂÇÑ´Ù.
Ctrl+¡¬(SINQUIT,3)¸¦ ´©¸£¸é ½ºÅ©¸³Æ®´Â Á¾·á¸¦ ÇϰԵȴÙ.
|
$ kill
-1
|
|
1) SIGHUP
|
2) SIGINT
|
3) SIGQUIT
|
4) SIGILL
|
|
5) SIGTRAP
|
6) SIGIOT
|
7) SIGBUS
|
8) SIGFPE
|
|
9) SIGKILL
|
10) SIGUSR1
|
11) SIGSEGV
|
12) SIGUSR2
|
|
13) SIGPIPE
|
14) SIGALRM
|
15) SIGTERM
|
16) SIGCHLD
|
|
17) SIGCONT
|
18) SIGSTOP
|
19) SIGTSTP
|
20) SIGTTIN
|
|
21) SIGTTOU
|
22) SIGURG
|
23) SIGXCPU
|
24) SIGXFSZ
|
|
25) SIGVTALRM
|
26) SIGPROF
|
27) SIGWINCH
|
28) SIGIO
|
|
29) SIGPWR
|
|
|
|
|
$ cat trap_exit
#!/bin/sh
#
#trap_exit: trap Å×½ºÆ®
#
trap ¡®echo basename
$0: signal catch¡¯ 1 2 15
trap ¡®echo script exit; exit¡¯ 3
while :
do
echo
loop
done
$ ./trap_exit
|
¸í·ÉÇà ÀÎÀÚ (Command-line
argument)
½© ½ºÅ©¸³Æ®¿¡¼´Â ÃÖ´ë 9°³ÀÇ ¸í·ÉÇà
ÀÎÀÚ¸¦ ¹ÞÀ» ¼ö ÀÖ´Ù. ±× °ªÀº $1~$9¿¡ ÀúÀåµÈ´Ù. (Ãֽн©¿¡¼´Â ±× ÀÌ»óÀÇ
ÀÎÀÚ¸¦ ¹ÞÀ» ¼öµµ ÀÖ´Ù. ${10}°ú °°Àº Çü½ÄÀÌ´Ù.) $0¿¡´Â ½ÇÇàÇÑ ½© ½ºÅ©¸³Æ®ÀÇ
°æ·Î°¡ ÀúÀåµÈ´Ù. ¶ÇÇÑ À§¿¡¼ Àá±ñ º¸¾ÒµíÀÌ $#¿¡´Â ÀÎÀÚÀÇ °³¼ö°¡ ÀúÀåÀÌ µÈ´Ù.
½ºÅ©¸³Æ® Áß¿¡ shift¸¦ »ç¿ëÇÏ¿´À½À»
ÁÖ¸ñÇ϶ó. shift´Â $1 ÀÎÀÚ¸¦ ¾ø¾Ö°í °¢ ÀÎÀÚ¹øÈ£¸¦ 1¾¿ ÁÙÀδÙ. Áï $2´Â
$1, $3Àº $2, $4Àº $3°ú °°Àº ½ÄÀ¸·Î µÈ´Ù.
#!/bin/sh
#
# prarg: ¼¼ °³ÀÇ ÀÎÀÚ¸¦ Ãâ·ÂÇÏ´Ù.
#
prog= basename
$0
if [$# -eq
3 ]
then
echo
¡°Script $prog path: $0¡±
echo
¡°Arg1: $1¡±
echo
¡°Arg2: $2¡±
shift
echo
¡°Arg3: $2¡±
else
echo
¡°Usage: $ $prog arg1 arg2 arg3¡±
exit
fi
$ ./prog es 34
Usage: $ prarg arg1 arg2 arg3
$ ./prog 28 ksl 9
Script prarg path: ./prarg
Arg1: 28
Arg2: ksl
Arg3: 9
|
±×·¡¼ shiftÇÑ ÀÌÈÄ¿¡´Â ¼¼¹øÂ°
ÀÎÀÚ°¡ $2°¡ µÇ´Â °ÍÀÌ´Ù. À̶§ $# °ªµµ 1ÁØ´Ù.
¸ðµç ÀÎÀÚ´Â ¡°$@¡±, $*¿¡ ÀúÀåÀÌ
µÈ´Ù. ¡°$@¡±´Â ¸í·ÉÇà¿¡¼ »ç¿ëÇÑ µû¿ÈÇ¥°¡ ±×·¡µµ Àû¿ëµÇÁö¸¸, $*¿¡¼´Â ±×
µû¿ÈÇ¥°¡ Àû¿ëµÇÁö ¾Ê´Â´Ù. µû¿ÈÇ¥¿¡ À¯¹«¿¡ µû¶ó¼ ½©¿¡¼ »ç¿ëÇϴ Ư¼ö¹®ÀÚµé -
°ø¹é, ÅÇ, \, ¡®, ¡°, ` µî - ÇØ¼®ÇÒ °ÍÀÎÁöÀÇ ¿©ºÎ°¡ °áÁ¤ÀÌ µÈ´Ù. ÀÌ´Â
½©À» »ç¿ëÇÏ´Â °Í¿¡ °üÇÑ ¹®Á¦À̱⠶§¹®¿¡ ´õÀÌ»ó ÀÚ¼¼È÷´Â ´Ù·çÁö ¾Ê°Ú´Ù.
$$¿¡´Â ÇöÀç ½© ½ºÅ©¸³Æ®ÀÇ ÇÁ·Î¼¼½º
ID°¡ ÀúÀåÀÌ µÈ´Ù. ÀÌ´Â ¸í·ÉÇà ÀÎÀÚ´Â ¾Æ´ÏÁö¸¸ Àӽà ÆÄÀÏÀ» ¸¸µé ¶§¿Í °°Àº
°æ¿ì¿¡ À¯À¶ÇÏ°Ô »ç¿ëµÈ´Ù.
·çÇÁ (Loop)
½© ½ºÅ©¸³Æ®¿¡¼ »ç¿ëÇÒ ¼ö ÀÖ´Â
·çÇÁ´Â ¼¼ °¡Áö°¡ ÀÖ´Ù.
while ·çÇÁ´Â Á¶°Ç½ÄÀÌ ÂüÀÎ
µ¿¾È do~done »çÀÌÀÇ ¸í·ÉÀ» ¼öÇàÇÑ´Ù.
$ cat arg-while
#!/bin/sh
#
# arg-while: ¸ðµç ÀÎÀÚ¸¦ Ãâ·ÂÇÑ´Ù.
#
echo Argument
number: $#
while [ $# -gt 0 ]
do
echo
$1
shift
done
$ ./arg-whilel 1 2 3 4
Argument number: 4
1
2
3
4
|
until ·çÇÁ´Â Á¶°Ç½ÄÀÌ ÂüÀÌ
µÉ ¶§±îÁö do~done »çÀÌÀÇ ¸í·ÉÀ» ¼öÇàÇÑ´Ù.
$ cat arg-until
#!/bin/sh
#
# arg-until: ¸ðµç ÀÎÀÚ¸¦ Ãâ·ÂÇÑ´Ù.
#
echo Argument
number: $#
until [ $# -eq 0 ]
do
echo
$1
shift
done
$ ./arg-until 1 2 3 4
Argument number: 4
1
2
3
4
|
$ cat arg-for
#
!/bin/sh
#
# arg-for: @ ÀÎÀÚ¾ÕÀÇ ÀÎÀÚ¸¦ Ãâ·ÂÇÑ´Ù.
#
echo Argument number: $#
for arg
do
if [ $arg = @ ]
then
break
fi
echo $arg
done
$ ./arg-for 1 2 @ 3 2 4 6
Argument number: 7
1
2
|
for ·çÇÁ´Â ¹®ÀÚ¿ ¸ñ·ÏÀÇ °ªµéÀÌ
for º¯¼ö¿¡ ÁöÁ¤µÇ¾î do~done »çÀÌÀÇ ¸í·ÉÀ» ¼öÇàÇÑ´Ù. in ºÎºÐÀ» »ý·«Çϸé
¸í·ÉÇà ÀÎÀÚ°¡ »ç¿ëµÈ´Ù. break¸¦ »ç¿ëÇÏ¸é ·çÇÁ¸¦ ºüÁ®³ª¿Â´Ù.
·çÇÁ´Â ¾Æ´ÑÁö¸¸ C¿¡¼ÀÇ switch¿Í
ºñ½ÁÇÑ ¿ªÇÒÀ» ÇÏ´Â case±¸¹®ÀÌ ÀÖ´Ù.
caseÀÇ Çü½ÄÀº ´ÙÀ½°ú °°´Ù.
º¯¼ö°ªÀ» ÆÐÅÏ1ºÎÅÍ ºñ±³Çذ¡¸é¼
ÇØ´çÇÏ´Â ÆÐÅÏÀÌ ÀÖÀ¸¸é ±×¿¡ ÇØ´çÇÏ´Â ¸í·ÉµéÀ» ¼öÇàÇÑ´Ù. ;;Àº ÆÐÅÏ¿¡ ÇØ´çÇÏ´Â
¸í·ÉÀÇ ³¡À» ³ªÅ¸³»°í esacÀº (case¸¦ °Å²Ù·Î ¾´ °ÍÀÌ´Ù.) case ±¸¹®ÀÇ
³¡À» ³ªÅ¸³½´Ù. ÇØ´çµÇ´Â ÆÐÅÏÀÌ ¾ø´Ù¸é * ÆÐÅÏÀÇ ¸í·ÉÀ» ¼öÇàÇÏ°Ô µÈ´Ù. ÆÐÅÏ¿¡´Â
½©¿¡¼ »ç¿ëÇÒ ¼ö ÀÖ´Â ¿ÍÀϵå Ä«µå(*,?), Á¤±ÔÇ¥Çö½Ä, ¹®ÀÚ¿, º¯¼ö°¡ ¿Ã
¼ö ÀÖ´Ù.
$ cat check-flag
#!/bin/sh
#
# check_flag: ÀÎÀÚ¸¦ °Ë»çÇÏ¿© flag¸¦ ÄÒ´Ù.
#
aflag=0
bflag=0
for arg
do
case
$arg in
-a)
aflag=1 ;;
-b)
bflag=1 ;;
*)
echo ¡°Usage: `basename $0` [-a] [-b]¡±
1>&2
exit
1 ;;
esac
done
echo aflag=$aflag
bflag=$bflag
$ ./check-flag
aflag=0 bflag=0
$ ./check-flag -a
aflag=1 bflag=0
$ ./check-flag -a -b
aflag=1 bflag=1
|
Á¶°Ç½Ä
if, while, until ±¸¹®¿¡¼´Â
Á¶°Ç½ÄÀÌ »ç¿ëµÈ´Ù. Á¶°Ç½ÄÀº Âü°ú °ÅÁþÀÇ °á°ú¸¦ ³»´Â ±¸¹®ÀÌ´Ù. ÂüÀÏ °æ¿ì Á¶°Ç½ÄÀº
0À» ¹ÝȯÇϰí, °ÅÁþÀÏ °æ¿ì¿¡´Â 1À» ¹ÝȯÇÑ´Ù. Á¶°Ç½ÄÀÇ Çü½ÄÀº ´ÙÀ½°ú °°´Ù.
test ½Ä
[ ½Ä ]
:
½ÄÀº ÆÄÀϽÄ, ¹®ÀÚ¿½Ä, ¼ö½ÄÀÇ
¼¼ Á¾·ù·Î Å©°Ô ³ª´ ¼ö ÀÖ´Ù. :´Â Ç×»ó ÂüÀÓÀ» ³ªÅ¸³½´Ù. while, until¿¡¼
¹«ÇÑ ·çÇÁ¸¦ ¸¸µé±â À§ÇØ »ç¿ëµÈ´Ù.
ÆÄÀϽÄÀº ¾î¶² ÆÄÀÏÀÇ ¼Ó¼ºÀ» °Ë»çÇÏ´Â
°ÍÀ¸·Î ´ÙÀ½°ú °°Àº Á¾·ù°¡ ÀÖ´Ù.
-b ÆÄÀÏ : ÆÄÀÏÀÌ ºí·° ÀåÄ¡
ÆÄÀÏÀ̸é Âü
-c ÆÄÀÏ : ÆÄÀÏÀÌ ¹®ÀÚ ÀåÄ¡ ÆÄÀÏÀ̸é Âü
-d ÆÄÀÏ : ÆÄÀÏÀÌ µð·ºÅ丮À̸é Âü
-e ÆÄÀÏ : ÆÄÀÏÀÌ Á¸ÀçÇϸé Âü
-f ÆÄÀÏ : ÆÄÀÏÀÌ Á¤±Ô ÆÄÀÏÀ̸é Âü
-L ÆÄÀÏ : ÆÄÀÏÀÌ ½Éº¼¸¯ ¸µÅ©À̸é Âü
-p ÆÄÀÏ : ÆÄÀÏÀÌ ³×ÀÓµå(named) ÆÄÀÌÇÁÀ̸é Âü
-S ÆÄÀÏ : ÆÄÀÏÀÌ ¼ÒÄÏÀ̸é Âü
-r ÆÄÀÏ : ÆÄÀÏÀÌ Àб⠰¡´ÉÀ̸é Âü
-s ÆÄÀÏ : ÆÄÀÏÀÇ Å©±â°¡ 0º¸´Ù Å©¸é Âü
-w ÆÄÀÏ : ÆÄÀÏÀÌ ¾²±â °¡´ÉÀ̸é Âü
-x ÆÄÀÏ : ÆÄÀÏÀÌ ½ÇÇà °¡´ÉÀ̸é Âü
ÆÄÀÏ1 -nt ÆÄÀÏ2 : ÆÄÀÏ1ÀÌ ÆÄÀÏ2º¸´Ù »õ·Î¿î ÆÄÀÏÀ̸é Âü
ÆÄÀÏ1 -ot ÆÄÀÏ2 : ÆÄÀÏ1ÀÌ ÆÄÀÏ2º¸´Ù ¿À·¡µÈ ÆÄÀÏÀ̸é Âü
ÆÄÀÏ1 -ef ÆÄÀÏ2 : ÆÄÀÏ1°ú ÆÄÀÏ2°¡ °°Àº ÆÄÀÏÀ̸é Âü
¹®ÀÚ¿½ÄÀº ¹®ÀÚ¿¿¡ ´ëÇÑ ºñ±³¸¦
ÇÑ´Ù.
-z ¹®ÀÚ¿ : ¹®ÀÚ¿ÀÇ ±æÀ̰¡
0À̸é Âü
-n ¹®ÀÚ¿ : ¹®ÀÚÀÏÀÇ ±æÀ̰¡ 0ÀÌ ¾Æ´Ï¸é Âü
¹®ÀÚ¿1 = ¹®ÀÚ¿2 : ¹®ÀÚ¿1°ú ¹®ÀÚ¿2°¡ °°À¸¸é Âü
¹®ÀÚ¿1 != ¹®ÀÚ¿2 : ¹®ÀÚ¿1°ú ¹®ÀÚ¿2°¡ ´Ù¸£¸é Âü
¼ö½ÄÀº ¼ýÀÚ°ªÀ» ºñ±³ÇÑ´Ù. ¾çÀÇ
Á¤¼ö, À½ÀÇ Á¤¼ö, 0, º¯¼ö°ªÀÌ ¿Ã ¼ö ÀÖ´Ù.
°ª1 -eq °ª2 : °ª1 = °ª2
°ª1 -ne °ª2 : °ª1 != °ª2
°ª1 -lt °ª2 : °ª1 < °ª2
°ª1 -le °ª2 : °ª1 <= °ª2
°ª1 -gt °ª2 : °ª1 > °ª2
°ª1 -ge °ª2 : °ª1 >= °ª2
À̿ܿ¡µµ ´ÙÀ½°ú °°ÀÌ ½Ä Àüü¿¡
´ëÇÑ ¿¬»êÀÌ °¡´ÉÇÏ´Ù.
! ½Ä : ½Ä¿¡ ´ëÇÑ ºÎÁ¤(not)
½Ä1 -a ½Ä2 : ½Ä1°ú ½Ä2¿¡ ´ëÇÑ ³í¸®°ö(and)
½Ä1 -o ½Ä2 : ½Ä1°ú ½Ä2¿¡ ´ëÇÑ ³í¸®ÇÕ(or)
°á·Ð
À̹ø ±â»ç¿¡¼´Â ½© ½ºÅ©¸³Æ®¿¡ ´ëÇÑ
±âº»ÀûÀÎ »çÇ×µéÀ» »ìÆìº¸¾Ò´Ù. ÀÛ¼º, ½ÇÇà ¹æ¹ý°ú ±âº»ÀûÀÎ ¹®¹ý¸¸À¸·Îµµ °£´ÜÈ÷
°³ÀÎÀûÀ¸·Î À¯¿ëÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ´Â ½ºÅ©¸³Æ®¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ´ÙÀ½ ±â»ç¿¡´Â
°¢ ¼¼ºÎ »çÇ׿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ¼³¸í°ú ±â¹ý¿¡ ´ëÇØ¼ ¾Ë¾Æµµ·Ï ÇÏÀÚ.
<Âü°íÀÚ·á>
¡¤UNIX POWER TOOLS, 2ed. Jerry Peek,
Tim O¡¯Reilly, Mike Loukides.
O¡¯Reilly
¡¤bash ¸Å´º¾ó ÆäÀÌÁö
|