-
쉘 스크립트 기본 문법 정리개발/쉘 스크립트 2023. 6. 4. 23:16
쉘 스크립트 개요
- 쉘이란 운영체제 상 여러 서비스를 구현하는 인터페이스를 제공하는 프로그램을 의미
- 쉘 스크립트는 리눅스 및 유닉스 기반 시스템에서 사용되는 스크립트 언어
- 커맨드 라인 명령어와 프로그래밍적인 요소를 조합하여 자동화된 작업을 수행하는 데 사용
- 시스템 프로그래밍에서 익히는 스크립트로, 서버 작업 자동화 및 운영(DevOps)을 위해 사용
쉘의 종류
- Bourne Shell: 최초의 쉘
- bash: Bourne-Again Shell로 명령형 편집 기능을 제공함
(Linux 및 GNU 운영 체제와 함께 배포되는 Bourne Shell의 향상된 무료 버전)
- ksh: 콘쉘, 주로 유닉스 기반의 OS에서 사용하며 명령형 편집 기능을 제공함
- zsh: z쉘, 쉘 스크립트를 위한 명령 인프리터
쉘 스크립트 파일(sh) 구성
- 파일의 가장 위 첫 라인은 #!/bin/bash로 시작 -> 해당 스크립트 파일을 실행할 때 사용할 쉘(shell)의 경로를 지정하는 역할, bash 명령어를 입력할 것이라는 의미
- 쉘 스크립트 파일은 코드를 작성한 후에는 실행 권한을 부여
- 보통 '파일명.sh' 형태로 파일명을 작성
쉡 스크립트 기본 문법 요소
1. 주석:
- '#' 기호를 사용하여 주석을 작성할 수 있음
- 주석은 스크립트의 실행에 영향을 주지 않고 설명을 추가할 수 있음
2. 변수 할당:
- 변수를 선언하고 값 할당에는 '=' 기호를 사용
- 변수 이름은 대소문자를 구분하며, 일반적으로 대문자로 작성되는 것이 관례
- 변수 사용 시 '$' 기호를 접두사로 사로 사용
3. 출력:
- 'echo' 명령을 사용하여 텍스트를 출력
- 변수의 값을 출력할 때는 '$'를 사용하여 변수를 참조
4. 조건문:
- 'if-else' 구문을 사용하여 조건에 따라 분기 가능
- 조건은 대괄호 '[ ]'로 묶이며, 비교 연산자 (예: -eq, -ne, -lt, -gt)를 사용하여 조건을 평가
5. 반복문:
- 'for' 또는 'while' 구문을 사용하여 반복 작업을 수행할 수 있음
- 'for'는 주어진 범위나 리스트에 대해 반복하고, 'while'은 주어진 조건이 참인 동안 반복
6. 함수:
- 함수를 정의하여 재사용 가능한 코드 블록을 생성할 수 있음
- 함수는 'function' 키워드를 사용하여 정의하며, 호출할 때는 함수 이름을 사용
7. 사용자 입력:
- 'read' 명령을 사용하여 사용자로부터 키보드 입력을 받을 수 있음
- 입력된 값은 변수에 할당되어 사용될 수 있음
8. 파일 조작:
- 파일을 생성, 읽기, 쓰기, 삭제 등 다양한 파일 조작 작업을 수행할 수 있음
- 'cat', 'grep', 'sed' 등의 명령을 사용하여 파일을 처리할 수 있음
9. 실행 권한:
- 스크립트 파일에 실행 권한을 부여하여 직접 실행할 수 있도록 설정해야 함
- 'chmod' 명령을 사용하여 실행 권한을 변경할 수 있음
기본적인 터미널 명령어
- pwd : 현재 위치 경로 출력
- ls : 현재 위치한 곳에 존재하는 디렉토리(dir), 파일 출력
- cd desktop : (현재 위치에서) desktop 디렉토리로 이동
- cd .. : 이전 디렉토리로 이동
기본적인 vi 명령어 (명령 모드)
- i : 현재 커서 위치에 삽입 (입력모드로 변경)
- dd : 한줄 잘라내기
- yy : 한줄 복사하기 (ctrl+c)
- p : 붙여넣기 (ctrl+v)
- u : 직전 명령 취소 (ctrl+z)
- h, j, k, l : 좌, 하, 상, 우
- gg : 첫 줄 이동
- G : 파일 끝 이동
- gg > shift + v (V) > shift + g (G) > y : 첫줄 이동 > 선택 > 맨끝으로 이동 > 복사
쉘 스크립트 예시
- 첫 줄에는 #!/bin/bash 기입
- 파일명을 shell_tutorial.sh로 만들고 권한 해결을 위해 터미널에서 chmod +x shell_tutorial.sh 실행
- ./shell_tutorial.sh로 실행
shell_tutorial.sh
#!/bin/bash # 주석 echo "---------주석--------------" echo "안녕하세요. 이것은 쉘 스크립트 예제입니다." echo "---------변수할당----------" # 변수 할당 NAME="John" AGE=25 echo "---------출력--------------" # 출력 echo "제 이름은 ${NAME}이고, 나이는 ${AGE}세입니다." echo "---------조건문------------" # 조건문 if [ ${AGE} -gt 18 ]; then echo "성인입니다." else echo "미성년자입니다." fi echo "---------반복문-----------" # 반복문 for i in 1 2 3 4 5; do echo "반복문 예제: $i" done echo "---------함수-------------" # 함수 say_hello() { echo "함수호출합니다!" } # 함수 호출 say_hello echo "--------사용자 입력-------" # 사용자 입력 echo "이름을 입력하세요: " read USER_NAME echo "안녕하세요, ${USER_NAME}님!" echo "--------파일 조작------------" # 파일 조작 echo "테스트 텍스트 파일을 만듭니다. 출력 이후에 이 내용이 만들어지게 됩니다." > test3.txt cat test3.txt
이후에 연결되는 내용: 리트코드 문제 풀기
'개발 > 쉘 스크립트' 카테고리의 다른 글
[LeetCode | Shell] 194. Transpose File (3) 2023.06.06 [LeetCode | Shell] 192. Word Frequency (0) 2023.06.06 [LeetCode | Shell] 193. Valid Phone Numbers (0) 2023.06.06 [LeetCode | Shell] 195. Tenth Line (1) 2023.06.05