์กฐ๊ฑด๋ฌธ if, switch-case
if๋ฌธ
๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
if [์ฒซ ๋ฒ์งธ ์กฐ๊ฑด์]
then
์ํ๋ฌธ
elif [๋ ๋ฒ์งธ ์กฐ๊ฑด์]
then
์ํ๋ฌธ
else
์ํ๋ฌธ
fi
if, then, else, fi๋ ๋ฐ๋์ ๊ธฐ์ ์ ํด์ผ ํจ. ์กฐ๊ฑด์ ์๋ค๋ก๋ ๋ฐ๋์ ๋๊ดํธ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ฉฐ, ๋๊ดํธ์ ์กฐ๊ฑด์ ์ฌ์ด์๋ ๋ฐ๋์ ํ ์นธ์ ์คํ์ด์ค๋ฅผ ๋์ด์ผ ํจ.
์กฐ๊ฑด์ ํ์
์กฐ๊ฑด์ ํ์ | ์ค๋ช |
if [$๋ณ์ ์ฐ์ฐ์ $๋ณ์ ]; then | ์ผ๋ฐ์ ์ธ ์กฐ๊ฑด์ ํ์ ์ผ๋ก ๋ ๋ณ์์ ๊ฐ์ ๋น๊ตํ ๋ ์ฐ์. |
if [$๋ณ์ ์ฐ์ฐ์ ์กฐ๊ฑด๊ฐ ]; then | ์กฐ๊ฑด๊ฐ์ด ๊ณ ์ ๋์ด ์์ ๊ฒฝ์ฐ ๋ณ์์ ์กฐ๊ฑด๊ฐ์ ๋น๊ตํ ๋ ์ฌ์ฉ. |
if [์ฐ์ฐ์ $๋ณ์]; then | ๋ณ์์ ๊ฐ์ด ๋ฌธ์์ด์ด๊ฑฐ๋ ๋๋ ํ ๋ฆฌ์ ๊ฐ์ ๊ฒฝ์ฐ์ผ ๋ ์ฃผ๋ก ์ฌ์ฉ. |
if [์กฐ๊ฑด์] ์ฐ์ฐ์ [์กฐ๊ฑด์]; then | ์ฌ๋ฌ ๊ฐ์ ์กฐ๊ฑด์์ AND๋ OR๋ก ๋ณตํฉ ์ฐ์ฐํ ๋ ์ฌ์ฉ. |
์กฐ๊ฑด์์ ๋ณ์์ ํ์
์ด๋ ๋ฌธ์์ด ๋๋ ํ์ผ๊ณผ ๊ฐ์ ๊ฐ์ฒด์งํฅ์ด๋์ ๋ฐ๋ผ ์ฌ์ฉ๋๋ ํ์
์ ์ฐจ์ด๊ฐ ์์. ์ฐ์ฐ ์ข
๋ฅ์ ๋ฐ๋ผ์๋ ์ฐจ์ด๊ฐ ์์ ์ ์์.
์กฐ๊ฑด์ ํ์
- if [$๋ณ์ ์ฐ์ฐ์ $๋ณ์ ]; then
~$ cat if_example1.sh
#!/bin/bash
value1=10
value2=10
if [ $value1 = $value2 ]
then
echo True
else
echo False
fi
~$ sh if_example1.sh
True
if๋ฌธ์ ์ฌ์ฉํ ๋ ๊ฐ์ฅ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๋ ์กฐ๊ฑด์ ํ์
. ๋ ๋ณ์ ๊ฐ์ ๋น๊ตํ ๋ ์ฃผ๋ก ์ฌ์ฉ.
์์ ์์๋ ์ธ๋ฏธ์ฝ๋ก ์ด ์ฌ์ฉ๋์ง ์์์ผ๋ ๋ค์ ์ค๋ก ๋๊ธธ ๊ฒฝ์ฐ์ ์ฌ์ฉ.
์กฐ๊ฑด์ ํ์
- if [ $๋ณ์ ์ฐ์ฐ์ ์กฐ๊ฑด๊ฐ ]; then
~$ cat if_example2.sh
#!/bin/bash
value=0
if [ $value = 0 ]
then
echo True
else
echo False
fi
~$ sh if_example2.sh
True
์กฐ๊ฑด๊ฐ์ด ๊ณ ์ ๋์ด ์์ด ๋ณ์์ ์กฐ๊ฑด๊ฐ์ ๋น๊ตํ ๋ ์ฃผ๋ก ์ฌ์ฉ.
์กฐ๊ฑด์์ ํํํ ๋ if๋ฌธ์ ์๋ค๋ก ๋ฐ๋์ ๊ณต๋ฐฑ์ ๋์ด์ผ ํจ.
์กฐ๊ฑด์ ํ์
- if [ ์ฐ์ฐ์ $๋ณ์ ]; then
~$ cat if_example3.sh
#!/bin/bash
value=""
if [ -z $value ] # ์ฐ์ฐ์ -z๋ ๋ณ์์ ์ ์ฅ๋ ๊ฐ์ ๊ธธ์ด๊ฐ 0์ธ์ง ๋น๊ต.
then
echo True
else
echo False
fi
~$ sh if_example3.sh
True
๋ณ์๊ฐ ๋ฌธ์์ด์ด๊ฑฐ๋ ๋๋ ํฐ๋ฆฌ ๋๋ ํ์ผ๊ณผ ๊ฐ์ด ๊ฐ์ฒดํ์ผ ๋ ์ฃผ๋ก ์ฌ์ฉ.
์กฐ๊ฑด์ ํ์
- if [ ์กฐ๊ฑด์ ] ์ฐ์ฐ์ [ ์กฐ๊ฑด์ ]; then
~$ cat if_example4.sh
#!/bin/bash
value=5
if [ $value -gt 0 ] && [ $value -lt 10 ]; then
echo True
else
echo False
fi
~$ sh if_example4.sh
True
์ฌ๋ฌ ๊ฐ์ ์กฐ๊ฑด์์ AND๋ OR์ ๊ฐ์ ๋ ผ๋ฆฌ ์ฐ์ฐ์์ ์ํด ๋ณตํฉ ์ฐ์ฐ์ ํ ๊ฒฝ์ฐ์ ์ฃผ๋ก ์ฌ์ฉ.
switch-case ๋ฌธ
๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
case $๋ณ์ in
์กฐ๊ฑด๊ฐ1)
์ํ๋ฌธ1 ;;
์กฐ๊ฑด๊ฐ2)
์ํ๋ฌธ2 ;;
์กฐ๊ฑด๊ฐ3)
์ํ๋ฌธ3 ;;
*)
์ํ๋ฌธ4
esac
case์ ํจ๊ป ๋น๊ต ๋์์ด ๋๋ ๋ณ์๋ช
์ ์ฌ์ฉํ๊ณ , ๋น๊ต๋ฅผ ํ ์กฐ๊ฑด๊ฐ๋ณ๋ก ์ํ๋ฌธ์ ์์ฑํ๋ ํ์์ผ๋ก ์ฌ์ฉ๋จ.
switch-case ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ ์์
~$ cat case-example.sh
#!/bin/bash
case $1 in
start)
echo "Start"
;;
stop)
echo "Stop"
;;
restart)
echo "Restart"
;;
help)
echo "Help"
;;
*)
echo "Please input sub command"
esac
~$ sh case-example.sh
Please input sub command
~$ sh case-example.sh start
Start
~$ sh case-example.sh help
Help
~$ sh case-example.sh help start # ์์ input๋ง ์ธ์.
Help
~$ sh case-example.sh stop
Stop
~$ sh case-example.sh restart
Restart
ํ๋จ์ *)์์ ์ ๋ ฅ๋ฐ์ ๋งค๊ฐ๋ณ์๊ฐ ์๋ ๊ฒฝ์ฐ ์ํํ ๋ด์ฉ์ ๋ํ๋.
๋ฐ๋ณต๋ฌธ for, while
for๋ฌธ
๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
# ์ฌ์ฉ๋ฒ1
for ๋ณ์ in [๋ฒ์(๋ฆฌ์คํธ ๋๋ ๋ฐฐ์ด, ๋ฌถ์ ๋ฑ)]
do
๋ฐ๋ณตํ ์ํ๋ฌธ
done
# ์ฌ์ฉ๋ฒ2
for ((๋ณ์=์ด๊ธฐ๊ฐ; ์กฐ๊ฑด์; ์ฆ๊ฐ๊ฐ))
do
๋ฐ๋ณตํ ์ํ๋ฌธ
done
์ฒซ ๋ฒ์งธ ์ฌ์ฉ๋ฒ์ in์ ์ฌ์ฉํ์ฌ ๋ฆฌ์คํธ๋ ๋ฐฐ์ด๊ณผ ๊ฐ์ ํน์ ๋ฒ์์ ๊ฐ๋ค์ ํ๋์ฉ ๊บผ๋ด์ด ๋ณ์์ ์ ์ฅํ๊ณ , ๋ฆฌ์คํธ๋ ๋ฐฐ์ด์ ํด๋น ๊ฐ์ ๋ชจ๋ ์ฌ์ฉํ ๋๊น์ง ํน์ ์ํ๋ฌธ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์.
๋ ๋ฒ์งธ ์ฌ์ฉ๋ฒ์ ์ด๊ธฐ๊ฐ์ด ํน์ ์กฐ๊ฑด์ ํด๋น๋ ๋๊น์ง ๊ฐ์ ์ฆ๊ฐ์ํค๋ฉด์ ํน์ ์ํ๋ฌธ์ ๊ณ์ ๋ฐ๋ณตํ๋ ๋ฐฉ๋ฒ. ํด๋น๊ฐ์ ์ฐ์ฐํ๋ ๊ฒฝ์ฐ ์ฃผ๋ก ์ฌ์ฉ.
์ฒซ ๋ฒ์งธ ์ฌ์ฉ๋ฒ ์ฌ์ฉ ๋น๋๊ฐ ๋ ๋์.
for๋ฌธ ์ฒซ ๋ฒ์งธ ์ฌ์ฉ๋ฒ ์์
~$ cat for-example1.sh
#!/bin/bash
for num in 1 2 3
do
echo $num;
done
~$ sh for-example1.sh
1
2
3
๋ฒ์๋ฅผ ๋ณ์๋ก ์ฌ์ฉํ ๊ฒฝ์ฐ
~$ cat for-example2.sh
#!/bin/bash
numbers="1 2 3"
for num in $numbers
do
echo $num;
done
~$ sh for-example2.sh
1
2
3
๋ฐ๋ณตํ ๊ฐ์ ๋ฒ์๋ฅผ ๋ฐ๋ก ๋์ดํ๊ธฐ ๋๋ฌธ์ ๋ฒ์ ์์ ๋ถ๊ฐ.
๋ฐ๋ณตํ ๊ฐ์ ๋ฒ์๋ฅผ ๋ณ์์ ์ ์ฅํจ์ผ๋ก์จ ๋ณ์์ ๊ฐ๋ง ๋ฐ๊พธ๋ฉด ์ธ์ ๋ ์ง ๋ฒ์ ๊ฐ ๋ณ๊ฒฝ ๊ฐ๋ฅ.
๋ฒ์๋ฅผ ๋๋ ํฐ๋ฆฌ๋ก ์ฌ์ฉํ ๊ฒฝ์ฐ
~$ cat for-example3.sh
#!/bin/bash
for file in $HOME/*
do
echo $file;
done
~$ sh for-example3.sh
/home/lucy/for-example1.sh
/home/lucy/for-example2.sh
/home/lucy/for-example3.sh
์
ธ ์คํฌ๋ฆฝํธ์๋ ์ซ์๋ ๋ฌธ์์ด ์ด์ธ์ ๋๋ ํฐ๋ฆฌ๋ ํ์ผ๊ณผ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ๋ฒ์๋ก ์ฌ์ฉ ๊ฐ๋ฅ.
์ ์์ ๋ ํ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ํ๋ด๋ ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ํ ๋๋ ํฐ๋ฆฌ ๋ด์ ๋๋ ํฐ๋ฆฌ ๋ฐ ํ์ผ ๋ชฉ๋ก์ ๋ฒ์๋ก ์ฌ์ฉ.
๋ฒ์๋ฅผ ์ค๊ดํธ๋ก ์ฌ์ฉํ ๊ฒฝ์ฐ
~$ cat for-example4.sh
#!/bin/bash
for num in {1..5}
do
echo $num;
done
~$ bash for-example4.sh
1
2
3
4
5
~$ sh for-example4.sh
{1..5}
์ค๊ดํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ด๊ธฐ๊ฐ๊ณผ ๋ง์ง๋ง๊ฐ์ ์ ๋ ฅํ๊ณ ์ค๊ฐ์ ์๋ตํ๋ค๋ ์๋ฏธ์ ..์ ์ด์ฉํ๋ฉด ๋ชจ๋ ์ซ์๋ฅผ ๋์ดํ์ง ์์๋ ๋๋ฏ๋ก ์ข ๋ ํจ์จ์ ์ผ๋ก ๋ฐ๋ณต๋ฌธ ์ฌ์ฉ ๊ฐ๋ฅ.
bash ๋ฌธ๋ฒ์ด๋ผ์ sh ๋ช ๋ น์ด๋ก ์คํํ๋ฉด ์ํ๋ ๊ฒฐ๊ณผ๊ฐ ๋์ค์ง ์์ผ๋ฏ๋ก bash ๋ช ๋ น์ด๋ก ์คํํด์ผ ํจ.
~$ cat for-example5.sh
#!/bin/bash
for num in {1..10..2}
do
echo $num;
done
lucy@5a6io:~$ bash for-example5.sh
1
3
5
7
9
์ค๊ดํธ๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ์ฆ๊ฐ๊ฐ์ด 1์ด ์๋๋ผ ๊ทธ ์ด์์ผ ๊ฒฝ์ฐ {์ด๊ธฐ๊ฐ..์ต์ข
๊ฐ..์ฆ๊ฐ๊ฐ}์ผ๋ก ํํ ๊ฐ๋ฅ.
๋ฒ์๋ฅผ ๋ฐฐ์ด๋ก ์ฌ์ฉํ ๊ฒฝ์ฐ
~$ cat for-example6.sh
#!/bin/bash
array=("apple" "bannana" "pineapple")
for fruit in ${array[@]}
do
echo $fruit;
done
~$ bash for-example6.sh
apple
bannana
pineapple
๋ฒ์๋ฅผ ๋ฐฐ์ด๋ก ์ฌ์ฉํ ๊ฒฝ์ฐ์๋ ๋ฐฐ์ด ์ ์ธ ์ ๊ฐ๊ณผ ๊ฐ ์ฌ์ด์ ์ผํ๋ฅผ ์ฌ์ฉํด์๋ ์ ๋จ.
for๋ฌธ์ ๋ฐฐ์ด์ ๋ชจ๋ ์์ดํ ์ ๋ฒ์๋ก ์ฌ์ฉํ ๊ฒฝ์ฐ์๋ ${๋ฐฐ์ด[@]}์ ์ฌ์ฉํ์ฌ ๋ฐฐ์ด์ ๋ชจ๋ ์์ดํ ์ ์ฌ์ฉํ๋ค๊ณ ๋ช ์ํด ์ฃผ์ด์ผ ํจ. ์์น ๋งค๊ฐ๋ณ์ $@๋ฅผ ์ฌ์ฉํ๋ฉด ํ๋ผ๋ฏธํฐ๋ก ๋์ด์ค๋ ๋ชจ๋ ๋งค๊ฐ๋ณ์๋ฅผ ์๋ฏธํ๋ ๊ฒ๊ณผ ๋์ผ.
for๋ฌธ ๋ ๋ฒ์งธ ์ฌ์ฉ๋ฒ ์์
~$ cat for-example7.sh
#!/bin/bash
for ((num=0; num<3; num++))
do
echo $num;
done
~$ bash for-example7.sh
0
1
2
((์ด๊ธฐ๊ฐ; ์กฐ๊ฑด์; ์ฆ๊ฐ๊ฐ))์ผ๋ก ๋ฒ์๋ฅผ ํํ.
while๋ฌธ
๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
while [ $๋ณ์1 ์ฐ์ฐ์ $๋ณ์2 ]
do
๋ฐ๋ณตํ ์ํ๋ฌธ
done
while๋ฌธ์ ์กฐ๊ฑด์์ ๋ฐ๋ก ์ฌ์ฉ. ๋ณ์์ ๊ฐ์ด ํน์ ์กฐ๊ฑด์ ๋ง์ ๋๊น์ง ๊ณ์ํด์ ์ํ๋ฌธ ๋ฐ๋ณต.
while๋ฌธ ์์
cat while-example1.sh
#!/bin/bash
num=0
while [ $num -lt 3 ]
do
echo $num
num=$((num+1))
done
~$ sh while-example1.sh
0
1
2
์ ๊ธ์ Bash ๊ธฐ์ค์ผ๋ก ์์ฑ๋์์ผ๋ฉฐ <์ฒ์ ๋ฐฐ์ฐ๋ ์ ธ ์คํฌ๋ฆฝํธ>๋ผ๋ ๋์๋ฅผ ์ฐธ๊ณ ํ์ต๋๋ค.
'Linux' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Linux] ๊ฐ์ฅ ๋ง์ด ์ฐ๋ ๋ฆฌ๋ ์ค ๋ช ๋ น์ด - grep (0) | 2025.06.02 |
---|---|
[Linux] Shell Script ๊ธฐ์ด ๋ฌธ๋ฒ - ์ ๊ท ํํ์ (0) | 2025.06.01 |
[Linux] Shell Script ๊ธฐ์ด ๋ฌธ๋ฒ - ์ฐ์ฐ์ (0) | 2025.05.31 |
[Linux] Shell Script ๊ธฐ์ด ๋ฌธ๋ฒ - ๋ณ์ ์ฌ์ฉํ๊ธฐ(2) (1) | 2025.05.06 |
[Linux] Shell Script ๊ธฐ์ด ๋ฌธ๋ฒ - ๋ณ์ ์ฌ์ฉํ๊ธฐ(1) (0) | 2025.04.26 |