Shell
- 운영체제 상에서 사용자가 입력하는 명령을 읽고 해석하여 대신 실행해주는 프로그램
- 운영체제의 커널과 사용자를 이어주는 역할
- 사용자의 명령어를 해석하고 운영체제가 알아들을 수 있도록 도와주는 명령어 해석기
Shell Script
- Shell에서 사용할 수 있는 명령어들의 조합을 모아서 만든 배치 파일
- 운영체제의 Shell을 이용하여 한줄씩 순차적으로 읽으면서 명령어들을 실행시켜주는 인터프리터 방식의 프로그램
- Shell Script를 활용하여 묶어진 명령어 조합을 수행하거나 반복적인 명령어를 단일 명령으로 쉽게 사용할 수 있음
기본 문법
- 파일로 작성 후, 파일을 실행
- 파일의 가장 위 첫 라인은 #!/bin/bash로 시작
- 파일 형식(확장자): '파일이름.sh'
- 쉘 스크립트 파일은 코드를 작성한 후에는 실행 권한 부여 chmod 777 파일이름.sh
- 주석: #내용
- 실행: ./파일이름.sh
변수
- 변수명=값 사이에 띄어쓰기는 허용되지 않음
- $변수명으로 참조
num=100
str="hello"
echo "$num" # echo "${num}"
echo "$str" # echo "${str}"
배열
- ${변수명[인덱스번호]}로 참조
alpha=("a" "b" "c") # 변수 선언
echo ${alpha[1]} # $alpha 배열의 두 번째 인덱스에 해당하는 b 출력
echo ${alpha[@]} # $alpha 배열의 모든 데이터 출력
echo ${alpha[*]} # $alpha 배열의 모든 데이터 출력
echo ${#alpha[@]} # $alpha 배열의 배열 크기 출력
filelist=( $(ls) ) # 해당 쉘 스크립트 실행 디렉토리의 파일 리스트를 배열로 변수 선언
echo ${filelist[*]} # $filelist 모든 데이터 출력
연산자
- expr: 숫자 계산
- expr을 사용하는 경우 `(틸트)를 사용해야 함
- 연산자와 괄호 앞에는 \ (역슬래시)를 같이 사용해야 함
- 연산자와 숫자, 변수, 기호 사이에 space를 넣어야 함
num=`expr \( 3 \* 5 \) / 4 + 7`
숫자인 경우
a -eq b | ==, equal |
a -ne b | !=, not equal |
a -lt b | <, less than |
a -le b | <= less of equal |
a -gt b | > greater than |
a -ge b | >= greater or equal |
문자(열)인 경우
== | 같으면 true |
!= | 다르면 true |
-z | length가 0이면 true = null인 경우 true |
-n | length가 0이 아니면 true |
조건문
if [ 조건 ]; then 명령문; fi
if [ 조건 ]
then
명령문 # 참일 때
else
명령문 # 거짓일 때
fi
num=5
#if[조건]; then ... elif[조건]; then ... else ... fi 문
if [ "${num}" -eq 2 ]; then
echo "num is 2"
elif [ "${test_num}" -eq 3 ]; then
echo "num is 3"
else
echo "num is not 2 or 3"
fi
#if((산술연산)); then ... elif((산술연산)); then else ... fi문
if (( ${num} > 3 )); then
echo "number is greater than 3"
else
echo "number is not greater than 3"
fi
반복문
while [ 조건 ]
do
명령문
done
#while문
num=0
while (( "${num}" < 5 )); do
echo "${num}"
(( num = "${num}" + 1 ))
done
#for문
arr=(1 2 3 4 5 6 7)
for i in ${arr[@]}; do
echo "$i"
done
for (( i = 0; i < 10; i++)); do
echo "$i"
done
함수
- function은 생략 가능
- 함수명만으로 호출 가능 (소괄호 필요x)
- 함수 선언보다 호출을 먼저하면 안됨
- 변수명 앞 local: 해당 함수 내에서만 사용 가능한 지역 변수를 선언할 때
# 함수 선언
function 함수명()
{
함수 내용
}
# 함수 사용
함수명
- 함수 인자: $1, $2, $3... 순서대로 번호가 부여되며 ${10} 부터는 {} 중괄호로 감싸주어야 함
# 함수 선언
function 함수명()
{
# 함수 내용
# $1 : 인자1, $2 : 인자2 ...
}
# 함수 사용
함수명 인자1 인자2 ...
파일 검사
-e 파일명 | 파일이 존재하는 경우 true |
-d 파일명 | 파일이 디렉토리인 경우 true |
-h 파일명 | 파일이 심볼릭 링크 파일인 경우 true |
-f 파일명 | 파일이 일반 파일인 경우 true |
-r 파일명 | 파일이 읽기가 가능한 경우 true |
-s 파일명 | 파일의 크기가 0이 아닌 경우 true |
-u 파일명 | 파일의 set-user-id가 설정된 경우 true |
-w 파일명 | 파일이 쓰기가 가능한 경우 true |
-x 파일명 | 파일이 실행 가능한 경우 true |
'언어 > 기타' 카테고리의 다른 글
C, C++, JAVA, Python (0) | 2023.05.08 |
---|