
name="홍길동" # 변수 선언 ( 변수명과 = 사이에 공백이 없어야 함 )
echo "안녕하세요, $name 님!" # 변수 참조 시 $를 사용
환경 변수로 선언하려면 export를 사용
export MY_VAR="쉘 스크립트"
파일 존재 여부 확인
if [ -e "myfile.txt" ]; then
echo "파일이 존재합니다."
else
echo "파일이 존재하지 않습니다."
fi
주요 조건 연산자
| 연산자 | 설명 | 예시 |
|---|---|---|
| -e | 파일이 존재하는지 | [ -e "파일명" ] |
| -d | 디렉토리인지 | [ -d "디렉토리명" ] |
| -f | 일반 파일인지 | [ -f "파일명" ] |
| -z | 문자열이 비었는지 | [ -z "$STRING" ] |
| = | 문자열 비교 | [ "str2" ] |
| -eq | 숫자 값이 같은지 | [ "num2" ] |
| -lt | 숫자 값이 작은지 | [ "num2" ] |
read -p "계절을 입력하세요: " season
case $season in
봄)
echo "꽃이 피는 계절입니다." ;;
여름)
echo "더운 계절입니다." ;;
*)
echo "알 수 없는 계절입니다." ;;
esac
리스트 반복
for item in "사과" "바나나" "포도"; do
echo "과일: $item"
done
특정 숫자 범위 반복
for i in {1..5}; do
echo "숫자: $i"
done
count=1
while [ $count -le 5 ]; do
echo "숫자: $count"
count=$((count + 1))
done
count=1
until [ $count -gt 5 ]; do
echo "숫자: $count"
count=$((count + 1))
done
greet() {
echo "안녕하세요, $1 님!" # $1: 첫 번째 매개변수
}
greet "홍길동"
return으로 값을 반환하고, 함수 호출 시 $?로 결과를 얻기
add() {
return $(( $1 + $2 ))
}
add 3 5
echo $? # 결과: 8
while과 read 명령어로 파일 내용을 한 줄씩 읽기
파일 라인 한 줄씩 읽어서 처리
while read line; do
echo "라인 내용: $line"
done < "myfile.txt"
스크립트에서 파일에 데이터를 기록
새 파일 생성 후 쓰기
echo "첫 번째 줄입니다." > output.txt
기존 파일에 추가
echo "두 번째 줄입니다." >> output.txt
특정 파일이나 디렉토리의 존재 여부를 확인
file="test.txt"
if [ -f "$file" ]; then
echo "파일이 존재합니다."
else
echo "파일이 없습니다."
fi
쉘 스크립트에서 문자열 길이를 구하려면 ${#변수}를 사용
str="안녕하세요"
echo ${#str} # 출력: 5
부분 문자열을 추출하려면 ${변수:시작:길이} 문법을 사용 ( 뭔가 파이썬 같음 )
str="안녕하세요"
echo ${str:0:2} # "안녕"
echo ${str:(-2)} # 뒤에서 2글자 출력: "하세요"
문자열의 특정 부분을 바꾸기
str="abc123abc"
echo ${str/123/456} # 첫 번째 "123" 치환: abc456abc
echo ${str//abc/XYZ} # 모든 "abc" 치환: XYZ123XYZ
fruits=("사과" "바나나" "포도")
echo ${fruits[0]} # "사과"
echo ${fruits[@]} # 전체 요소
배열의 모든 요소를 순회하려면 for 문 사용
for fruit in "${fruits[@]}"; do
echo "$fruit"
done
쉘 스크립트에서 산술 연산은 $(( )) 문법을 사용
a=7
b=3
echo "덧셈: $((a + b))" # 덧셈: 10
echo "뺄셈: $((a - b))" # 뺄셈: 4
echo "곱셈: $((a * b))" # 곱셈: 21
echo "나눗셈: $((a / b))" # 나눗셈: 2
echo "나머지: $((a % b))" # 나머지: 2
참고 : expr 명령을 사용하여 실행 가능
표준 출력과 에러 리다이렉션
스크립트를 작성할 때 출력과 에러를 각각 관리하려면 리다이렉션을 사용
echo "정상 출력" > output.log # 출력 파일 저장
ls nonexistent_file 2> error.log # 에러 파일 저장
명령어 연결
&&와 ||를 사용하여 명령어를 연결할 수 있습니다.
ls myfile.txt && echo "파일 있음" || echo "파일 없음"
쉘 스크립트로 실행되는 프로세스를 제어하거나 확인할 수 있습니다.
작업을 백그라운드에서 실행하려면 &를 사용합니다.
./long_task.sh &
ps 명령으로 현재 실행 중인 프로세스를 확인합니다.
ps -ef | grep process_name