둘셋 개발!

[Linux] 쉘 스크립트 작성하는 방법 본문

카테고리 없음

[Linux] 쉘 스크립트 작성하는 방법

23 2024. 3. 26. 21:40

본 내용은 'KT 리눅스 쉘 스크립트 프로그래밍 교육'에 기반한 내용입니다.
 

✏️ 쉘 스크립트의 기본 구조

1. 첫 줄에 쉬뱅(#!) 추가
bash shell일 경우 첫 줄에 '#!/bin/bash'를 추가하여 운영체제에게 어떤 인터셉터를 사용할 지 알려준다.
 
2. 주석
'#'으로 주석을 달 수 있다.
 
3. 환경 설정
환경변수를 설정하거나 스크립트 실행을 위한 기본 경로를 설정한다.
 
4. 함수 정의
스크립트 내에서 사용할 함수를 정의할 수 있다.
 
5. 메인 로직
실제 스크립트의 로직이 들어간다.
 
6. 종료 처리
스크립트 실행이 완료되면 필요한 종료 작업을 수행한다.
 
다음은 이 6가지의 기본구조를 모두 사용한 스크립트이다.

#!/bin/bash
# 첫 줄

# 주석입니다

# 환경설정
PATH="/usr/local"

# 함수 정의
function say_hello {
        echo "Hello, $1!" # 인사와 함께 첫번째 인자를 출력
}

# 주 실행부
user="World"
say_hello $user

# 종료 처리
echo "스크립트 실행 완료"

 
실행하면

실행 결과

이렇게 나온다.
 


✏️ 쉘 스크립트 실행하기

1. bash, sh로 실행하기

 
2. 스크립트 파일 실행 권한 설정 후 ./[파일명]으로 실행하기


 그리고 어느 디렉토리 위치에 있든 파일이름으로만 실행하고 싶다면 Path경로에 실행하고자 하는 디렉토리 경로를 넣으면 된다.
 

PATH=$PATH:/lab/scripts/uni

$PATH의 의미는 기존의 PATH이므로 꼭!!!! 넣어줘야 한다.
아니면 기존 path 경로가 다 날라간다.
 

(/lab/scripts 경로에 basic_structure.sh를 생성했는데, 이미 path에 해당 경로가 저장되어 있어서 삭제하고, scripts디렉토리 안에 uni디렉토리를 생성하고 그 안에 basic_structure.sh를 넣었다)
 
basic_structure.sh는 /lab/scripts/uni 디렉토리안에 있으므로, 해당 파일이 저장되어 있는 디렉토리 안에서는 파일 경로를 적어주지 않고 파일명만 적어줘도 실행이 되지만
다른 디렉토리 내에서는 'No such file or directory' 라고 나온다.
하지만 path를 경로에 '/lab/scripts/uni'를 추가한 뒤로부터는 어느 디렉토리 내에서도 파일명으로만 실행이 가능한 걸 확인할 수 있다.


✏️ 쉘 스크립트 찾기

1. 제목으로 찾기

find /lab/scripts/uni/ -name "*.sh"

find를 사용하면 name 옵션을 사용해서 검색한다.
위의 명령은 .sh로 끝나는 파일을 찾아달라는 의미이다.
 

2.  파일 속성으로 찾기

find /lab/ | xargs file

위의 명령은 /lab/ 밑에 위치하는 것들 중 ’파일‘인 것들을 찾아달라는 의미이다.