-
๐ Ch13 Basic Shell Scripting ๐๐ฎ ํ๊ต ๊ณต๋ถ/๐ ์ ๋์ค ์์คํ 2025. 5. 20. 17:25
Script Language (์คํฌ๋ฆฝํธ ์ธ์ด)
๋ฏธ๋ฆฌ ์ ์ฒด๋ฅผ ์ปดํ์ผํ์ง ์๊ณ , ์ธํฐํ๋ฆฌํฐ(ํด์๊ธฐ)๊ฐ ํ ์ค์ฉ ์ฝ์ด์ ์ฆ์ ์คํํ๋ ์ธ์ด
ex) Unix Shell, Python, Perl, Ruby
<-> ์ปดํ์ผ ์ธ์ด(C/C++)๋ ์คํ ์ ์ปดํ์ผํด์ผ ํจ
์ ์คํฌ๋ฆฝํธ์ ์ฃผ๋ ์ฉ๋
์์คํ ๊ด๋ฆฌ ์๋ํ(System administration): ์๋ฒ ์ค์ , ๋ฐฑ์ ๋ณต์, ๋ก๊ทธ ์ ๋ฆฌ, ์ฌ์ฉ์ ๊ณ์ ๊ด๋ฆฌ ๋ฑ ๊ด๋ฆฌ์๊ฐ ๋งค์ผ ๋ฐ๋ณตํด์ ์ํํด์ผ ํ ์์ ๋ค์ ์์ญ ์ค ๋ด์ธ์ ๊ฐ๋จํ ์ ์คํฌ๋ฆฝํธ๋ก ์ฒ๋ฆฌ ๊ฐ๋ฅ
๋จ์/๋ฐ๋ณต ์ ๋ฌด์ ์๋ํ: ์คํฌ๋ฆฝํธ๋ก ์์ฑํด ๋๋ฉด ์ฌ๋์ด ์ผ์ผ์ด ์ฝ์์์ ํ์ดํํ์ง ์์๋ ๋จ
Script file (์ ์คํฌ๋ฆฝํธ ํ์ผ์์์ ๊ธฐ๋ณธ ๋ฌธ๋ฒ ์์)
#!(Shebang): ์ด ์คํฌ๋ฆฝํธ๋ฅผ ์ด๋ค ์ธํฐํ๋ฆฌํฐ๋ก ์คํํ ์ง ์ง์
hash(#)/bang(!) ex) #!/bin/sh
#(comments): ์ฃผ์
variable=value ๋ณ์ ํ ๋น
read var: read ๋ค์ ๋ณ์ ์ด๋ฆ์ ์ฐ๋ฉด, ํค๋ณด๋๋ก๋ถํฐ ํ ์ค์ ์ฝ์ด ๊ทธ ๊ฐ์ ํด๋น ๋ณ์์ ํ ๋น
ํน์ ๋ณ์(special variables)
?: ์ด์ ๋ช ๋ น์ ์ข ๋ฃ ์ํ๋ฅผ ์ ์ฅ (0-์ฑ๊ณต / !0-์คํจ)
$: ํ์ฌ ์ ํ๋ก์ธ์ค์ PID(Process ID) / ์คํฌ๋ฆฝํธ๋ ์๋ธ์ ์ด ๋์์ง ์ค์ ํ๋ก์ธ์ค ๋ฒํธ๊ฐ ํ์ํ ๋ ์ฌ์ฉ
-: ์์ด ์์๋ ๋ ์ฌ์ฉ๋ ์ต์ ๋ค
!: ๋ง์ง๋ง์ผ๋ก ๋ฐฑ๊ทธ๋ผ์ด๋(&) ์คํํ ํ๋ก์ธ์ค์ PID / ์ฌ๋ฌ ๋ฐฑ๊ทธ๋ผ์ด๋ ์์ ์ค ๋ฐฉ๊ธ ์คํํ ์์ ์ ์ด ์ ์ ์ฉ
0: ํ์ฌ ์คํ ์ค์ธ ์คํฌ๋ฆฝํธ(๋๋ ์ ธ)์ ์ด๋ฆ
1-9: ์ปค๋งจ๋๋ผ์ธ ์ธ์(argument) 1๋ฒ๋ถํฐ 9๋ฒ๊น์ง
$-: ๊ฐ์ฅ ๋ง์ง๋ง์ผ๋ก ์ฌ์ฉ๋ ์๊ท๋จผํธ ๋๋ ๋ง์ง๋ง ๋ช ๋ น์ ๋ง์ง๋ง ํ ํฐ / ๊ฐ๋จํ ์ด์ ์ธ์ ์ฌํ์ฉํ ๋ ํธ๋ฆฌ
Flow Control
Test ๋ช ๋ น(์กฐ๊ฑด ๊ฒ์ฌ)
- test <expression>
- [ <expression> ]
์ฐ์ฐ์ =, <, >, !=
์กฐ๊ฑด๋ฌธ
- if-then-fi
if [ ์กฐ๊ฑด ]; then # ์กฐ๊ฑด์ด ์ฐธ์ผ ๋ ์คํ fi
- if-then-else-fi
if [ ์กฐ๊ฑด ]; then # ์ฐธ์ผ ๋ else # ๊ฑฐ์ง์ผ ๋ fi
- if-elif-else-fi
if [ ์กฐ๊ฑด1 ]; then # ์กฐ๊ฑด1 ์ฐธ elif [ ์กฐ๊ฑด2 ]; then # ์กฐ๊ฑด2 ์ฐธ else # ๋ชจ๋ ๊ฑฐ์ง fi
- case-in-esac
case "$var" in pattern1) ๋ช ๋ น๋ค ;; pattern2|pattern3) ๋ช ๋ น๋ค ;; *) ๊ธฐ๋ณธ ๋ช ๋ น ;; esac
๋ฐ๋ณต๋ฌธ
- while-do-done
while [ ์กฐ๊ฑด ]; do # ์กฐ๊ฑด์ด ์ฐธ์ธ ๋์ ๋ฐ๋ณต done
- until-do-done
until [ -f /tmp/done.flag ]; do echo "์์ง /tmp/done.flag ํ์ผ์ด ์์ต๋๋ค." sleep 1 done echo "ํ์ผ์ด ์์ฑ๋์์ต๋๋ค."
'๐ฎ ํ๊ต ๊ณต๋ถ > ๐ ์ ๋์ค ์์คํ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ Ch16 Unix Networking ๐ (0) 2025.05.31 ๐ Ch14 Advanced Shell Scripting ๐ (0) 2025.05.31 ๐ Ch11 Running program at specified times ๐ (0) 2025.04.12 ๐ Ch10 Job Control & Process Management ๐ (0) 2025.04.11 ๐ Ch08 Advanced Tools ๐ (1) 2025.04.11