μ μ€ν¬λ¦½νΈ
리λ
μ€ μμ€ν
μμ μ¬μ©λλ λͺ
λ Ήμ΄λ€μ μμ°¨μ μΌλ‘ μ€ννκΈ° μν μ€ν¬λ¦½νΈ μΈμ΄
μ(Shell) μ΄λ?
μ΄μ체μ μ 컀λκ³Ό μ¬μ©μ κ°μ μΈν°νμ΄μ€λ‘ λμνλ νλ‘κ·Έλ¨
μ¬μ©μκ° λͺ
λ Ήμ΄λ₯Ό μ
λ ₯νλ©΄, μμ΄ ν΄λΉ λͺ
λ Ήμ΄λ₯Ό ν΄μνκ³ μ»€λμ μ λ¬νμ¬ μ€νν©λλ€. μμ λͺ
λ Ήμ΄ ν΄μκΈ°μ μν μ μννλ©° μ¬μ©μκ° μ΄μ체μ μ μνΈ μμ©ν μ μλλ‘ ν©λλ€.
μ μ’ λ₯
β’
Bash(Bourne Again SHell)
β’
sh(Bourne Shell)
β’
csh(C Shell)
β’
ksh(Korn Shell)
β’
zsh(Z Shell) λ±
μ μ£Όμ κΈ°λ₯
1.
λͺ
λ Ή ν΄μ: μ¬μ©μκ° μ
λ ₯ν λͺ
λ Ήμ΄λ₯Ό ν΄μνμ¬ μ€ν κ°λ₯ν ννλ‘ λ³νν©λλ€.
2.
νλ‘κ·Έλ¨ μ€ν: λͺ
λ Ήμ΄λ₯Ό μ€ννκ±°λ μ¬μ©μκ° μμ±ν μ€ν¬λ¦½νΈλ₯Ό μ€νν©λλ€.
3.
νκ²½ μ€μ : μ¬μ©μμ νκ²½ μ€μ μ λ‘λνκ³ κ΄λ¦¬ν©λλ€.
4.
λ³μ λ° λͺ
λ Ήμ΄ μ²λ¦¬: λ³μμ κ° μ€μ , λͺ
λ Ήμ΄μ μ€ν κ²°κ³Όλ₯Ό μ²λ¦¬ν©λλ€.
5.
νμΌ λ° λλ ν°λ¦¬ κ΄λ¦¬: νμΌ λ° λλ ν°λ¦¬μ μμ±, μμ , μ΄λ λ±μ κ΄λ¦¬ν©λλ€.
μμ μ¬μ©μμ μ΄μ체μ κ°μ λ€λ¦¬ μν μ νλ©°, ν°λ―Έλ λλ μ½μμ ν΅ν΄ μ¬μ©μμ μνΈ μμ©ν©λλ€. μ¬μ©μλ μμ ν΅ν΄ μ΄μ체μ μ λ€μν κΈ°λ₯μ μ¬μ©νκ³ λͺ
λ Ήμ λ΄λ¦΄ μ μμ΅λλ€.
μμ€ν¬λ¦½νΈ κΈ°λ³Έ λ¬Έλ²
1.
μ¬μ©ν μ μ§μ
2.
νμ€ μΆλ ₯
3.
λ³μ μ μ λ° μ¬μ©
4.
μ μ΄λ¬Έ
a.
쑰건문
b.
λ°λ³΅λ¬Έ
5.
ν¨μ μ μ λ° νΈμΆ
μ¬μ©ν μ μ§μ
μ μ€ν¬λ¦½νΈμ 첫 μ€μ μ€ν¬λ¦½νΈκ° μ΄λ€ μμμ μ€νλ μ§ μ§μ νλ λΆλΆμ
λλ€.
μ£Όλ‘ Bash μμ μ¬μ©νλ€.
Bash (Bourne Again SHell):
#!/bin/bash
Bash
볡μ¬
csh (C Shell):
#!/bin/sh
Bash
볡μ¬
ksh (Korn Shell):
#!/bin/ksh
Bash
볡μ¬
zsh (Z Shell):
#!/bin/zsh
Bash
볡μ¬
νμ€ μΆλ ₯
echo μΆλ ₯λ©μμ§
Bash
볡μ¬
β’
λ¬Έμμ΄ μΆλ ₯ (β β)
echo 'Hello, shell'
Bash
볡μ¬
β’
λ¬Έμμ΄ μΆλ ₯ (β β)
echo "Hello, shell'
Bash
볡μ¬
β’
λ³μ μΆλ ₯
echo $name
Bash
볡μ¬
β’
λ³μ + λ¬Έμμ΄ μΆλ ₯
echo 'Hello, $name'
Bash
볡μ¬
echo 'Hello, ${name}'
Bash
볡μ¬
λ³μ μ μ λ° μ¬μ©
μ μ€ν¬λ¦½νΈμμ λ³μλ₯Ό μ μνκ³ μ¬μ©νλ λ°©λ²μ λ€μκ³Ό κ°μ΅λλ€:
μ£Όμ
λ³μ μ μ μμλ = κΈ°νΈ μμͺ½μ λμ΄μ°κΈ°λ₯Ό νμ©νμ§ μμ΅λλ€. μ¦, = κΈ°νΈ μμͺ½μ κ³΅λ°±μ΄ μμ΄μΌ ν©λλ€.
: name=βALOHAβ
: name = βALOHAβ
test.sh
#!/bin/bash
# λ³μ μ μ
name="ALOHA"
age=20
# λ³μ μ¬μ©
echo "My name is $name, and I am $age years old."
Bash
볡μ¬
λ³μ νμ₯(variable expansion)
β’
λ¬Έμμ΄ μ°κ²°
β’
λ°°μ΄ μμ μ κ·Ό
β’
λͺ
λ Ήμ΄ μμμ λ³μ μ¬μ©
λ¬Έμμ΄ μ°κ²°
β’
λ³μμ λ¬Έμμ΄μ λͺ
νν ꡬλΆνκΈ° μν΄ ${ } κΈ°νΈλ₯Ό μ¬μ©ν©λλ€.
name="ALOHA"
echo "Hello, ${name}!"
Bash
볡μ¬
βHelloβ κ³Ό ${name}μ μ¬μ©νμ¬ λ³μλ₯Ό λͺ
νν ꡬλΆνκ³ , μΆλ ₯ κ²°κ³Όλ "Hello, ALOHA!"κ° λ©λλ€.
λ°°μ΄ μμ μ κ·Ό
fruits=("apple" "orange" "banana")
index=1
echo "Selected fruit: ${fruits[${index}]}"
Bash
볡μ¬
λͺ λ Ήμ΄ μμμ λ³μ μ¬μ©
λͺ
λ Ήμ΄ μμμ λ³μλ₯Ό μ¬μ©ν λλ $() κΈ°νΈλ‘ λ¬Άμ΄μ λͺ
λ Ήμ΄ μΉνμ μνν©λλ€.
PROJECT_NAME='hello-application'
CURRENT_PID=$(pgrep -f "${PROJECT_NAME}.war")
echo $CURRENT_PID
Bash
볡μ¬
1.
${PROJECT_NAME}μ λ³μ PROJECT_NAMEμ κ°μ μ¬μ©ν©λλ€.
2.
"${PROJECT_NAME}.war"μ λ³μλ₯Ό νμ©νμ¬ νμ₯μκ° .warμΈ νλ‘μΈμ€λ₯Ό μ°Ύμ΅λλ€.
3.
pgrep -f λͺ
λ Ήμ΄λ ν¨ν΄μ μΌμΉνλ νλ‘μΈμ€μ PID(νλ‘μΈμ€ ID)λ₯Ό κ²μν©λλ€.
4.
$(...)λ λͺ
λ Ήμ΄ μΉνμ μννλ©°, pgrep λͺ
λ Ήμ΄μ κ²°κ³Όλ₯Ό λ³μ CURRENT_PIDμ ν λΉν©λλ€.
μ¦, μ λͺ
λ Ήμ΄λ ${PROJECT_NAME}.war ν¨ν΄μ μΌμΉνλ νλ‘μΈμ€μ PIDλ₯Ό μ°Ύμμ CURRENT_PID λ³μμ μ μ₯νλ μν μ ν©λλ€.
μ μ΄λ¬Έ
β’
쑰건문
β’
λ°λ³΅λ¬Έ
쑰건문
쑰건문μ μ£Όμ΄μ§ 쑰건μ λ°λΌ λ€λ₯Έ λμμ μννλ λ° μ¬μ©λ©λλ€:
#!/bin/bash
# 쑰건문 μμ
age=18
if [ $age -ge 18 ]; then
echo "You are an adult."
else
echo "You are a minor."
fi
Bash
볡μ¬
쑰건 μ²λ¦¬λ₯Ό μν μ°μ°μ
β’
μ«μ λΉκ΅ μ°μ°μ
β’
λ¬Έμμ΄ λΉκ΅ μ°μ°μ
β’
νμΌ/λλ ν 리 μ¬λΆ νμΈ μ°μ°μ
μ«μ λΉκ΅ μ°μ°μ
μ°μ°μ | λμ κΈ°νΈ | μ€λͺ
|
-eq | == | equal to (κ°μ) |
-ne | != | not equal to (κ°μ§ μμ) |
-lt | < | less than (λ―Έλ§) |
-le | <= | less than or equal to (μ΄ν) |
-gt | > | greater than (μ΄κ³Ό) |
-ge | >= | greater than or equal to (μ΄μ) |
#!/bin/bash
# λ³μ μ μ
a=5
b=10
# μ«μ λΉκ΅
if [ $a -eq $b ]; then
echo "$aμ $bλ κ°μ΅λλ€."
elif [ $a -lt $b ]; then
echo "$aλ $bλ³΄λ€ μμ΅λλ€."
else
echo "$aλ $bλ³΄λ€ ν½λλ€."
fi
Bash
볡μ¬
λ¬Έμμ΄ λΉκ΅ μ°μ°μ
μ°μ°μ | μ€λͺ
|
== | equal to (κ°μ) |
!= | not equal to (κ°μ§ μμ) |
#!/bin/bash
# λ³μ μ μ
string1="hello"
string2="world"
# λ¬Έμμ΄ λΉκ΅
if [ "$string1" == "$string2" ]; then
echo "λ λ¬Έμμ΄μ κ°μ΅λλ€."
else
echo "λ λ¬Έμμ΄μ λ€λ¦
λλ€."
fi
Bash
볡μ¬
νμΌ/λλ ν 리 μ¬λΆ νμΈ μ°μ°μ
μ°μ°μ | μ€λͺ
|
-f | νμΌμ΄ μ‘΄μ¬νλμ§ νμΈ |
-d | λλ ν λ¦¬κ° μ‘΄μ¬νλμ§ νμΈ |
#!/bin/bash
# νμΌ/λλ ν 리 μ¬λΆ νμΈ
file_path="/path/to/somefile"
directory_path="/path/to/somedir"
if [ -f "$file_path" ]; then
echo "νμΌμ΄ μ‘΄μ¬ν©λλ€."
else
echo "νμΌμ΄ μ‘΄μ¬νμ§ μμ΅λλ€."
fi
if [ -d "$directory_path" ]; then
echo "λλ ν λ¦¬κ° μ‘΄μ¬ν©λλ€."
else
echo "λλ ν λ¦¬κ° μ‘΄μ¬νμ§ μμ΅λλ€."
fi
Bash
볡μ¬
λ°λ³΅λ¬Έ
μ£Όμ΄μ§ 쑰건μ΄λ νμμ λ°λΌ μΌλ ¨μ λͺ
λ Ήμ λ°λ³΅ μ€νν©λλ€
β’
for
β’
while
β’
until
for λ°λ³΅λ¬Έ
for item in 1 2 3 4 5
do
echo "Item: $item"
done
Bash
볡μ¬
for i in {1..5}
do
echo "Iteration $i"
done
Bash
볡μ¬
while λ°λ³΅λ¬Έ
counter=0
while [ $counter -lt 5 ]
do
echo "Counter: $counter"
((counter++))
done
Bash
볡μ¬
until λ°λ³΅λ¬Έ
counter=0
until [ $counter -ge 5 ]
do
echo "Counter: $counter"
((counter++))
done
Bash
볡μ¬
ν¨μ μ μ λ° νΈμΆ
νΉμ κΈ°λ₯μ μννλμ½λμ λͺ¨μμ μ μνκ³ , νμν μ€ννλ¦μμ νΈμΆνμ¬ μ¬μ©ν©λλ€.
#!/bin/bash
# ν¨μ μ μ
ν¨μλͺ
() {
echo "Hello, $1!"
echo "Hello, $2!"
}
# ν¨μ νΈμΆ
ν¨μλͺ
"μΈμ1" "μΈμ2"
Bash
볡μ¬
#!/bin/bash
# ν¨μ μ μ
greet() {
echo "Hello, $1!"
}
# ν¨μ νΈμΆ
greet "ALOHA"
Bash
볡μ¬
μ μ€ννκΈ°
sh test.sh
Bash
볡μ¬
bash μ μ€ννκΈ°
bash test.sh
Bash
볡μ¬