일목차(T.O.C)
1. 셸 스크립트의 기본 동작 원리
1-1. 셸 스크립트
1-2. 셸 스크립트 만들고, 실행하기
2. 환경변수
2-1. path 환경변수에 경로 추가하기
2-2. .bashrc 파일에 저장하여 환경변수를 영구적으로 사용하기
3. 쉘 스크립트의 매개변수
3-1. $() 명령어 결과를 변수에 저장하기
3-2. $1 쉘 스크립트의 위치 매개변수
4. 쉘 스크립트의 사용자 입력과 출력
4-1. echo 명령어의 기본동작
4-2. 줄바꿈 없는 echo -n, read
쉘 스크립트의 실행과 환경변수 등록하여 빠르게 실행, 쉘 스크립트 내의 매개변수와 출력 형식
1. 셸 스크립트의 기본 동작원리
1-1. 셸 스크립트
윈도우에서의 batch 파일과 유사함. Shell 이나 command line 인터프리터에서 구동되도록 작성된 스크립트
인터프리터 방식이므로, 한줄 한줄 읽어 실행함으로 다소 속도가 느리다는 단점이 있다.
1. 실행할 명령어를 모아 만든 문서파일
2. 반복작업 자동화, 명령어 실행순서를 보장.
3. 백업, 로그 수집, 시스템 관리 등 다양한 작업을 효율적으로 가능.
4. 형식과 문법을 지키는 게 중요함

셸 헤더-Shebang : #! 뒤에 어떤 셸로 스크립트를 실행할지 경로를 지정할 수 있음(여기서는 bash 셸을 이용함)
쉘에는 여러 버전이 있다.
sh : 초기의 유닉스 쉘
ksh : 콘쉘이라고 불리며, sh를 확장해서 생성
bash: sh 와 대부분 호환. 가장 널리 쓰임.
주석 : #문자를 맨 앞에, 그 줄은 명령어가 아닌 사용자가 셸 스크립트 내용을 설명하기 위한 용도
블록을 주석하기 위해서는 :<<"END"는 이 구간부터 주석이 시작되는 블록이고, END로 주석이 끝나는 블록을 명시해주면 된다.
vi 에디터로 여러줄 주석방법, 기본 여러줄 주석문법 대신 vi 단축키를 이용한 주석처리 방법이 있다
- vi 편집기를 열고, ctrl+q를 눌러 비주얼 모드로 진입한다(비주얼 모드는 vim 이 설치되어 있어야한다)
- 주석을 처리하고자 하는 라인까지 방향키 또는 vi방향키를 이용하여 이동한다
- shift+i를 누르고 #을 입력한다
- esc 키를 누른다
명령어 : 셸 프롬프트에서 사용했던 하나 이상의 명령어. 이게 순차적으로 실행됨.
1-2. 셸 스크립트 만들고 실행하기
1. 나노, 빔 문서 편집기를 활용해 , hello.sh 파일명으로 문서작성(쉘 스크립트임을 표현하기 위해 .sh)
2. 파일을 실행하려면 실행권한인 x를 주고(chmod +x hello.sh/chmod 755 hello.sh), pwd로 파일 경로를 전체입력해야함.

1-3. 전역변수 & 지역변수
1. 쉘에서 선언된 변수는 기본적으로 전역변수이다.
단, 함수 안에서만 지역변수를 사용할 수 있는데, 사용하려면 변수 명 앞에 local을 붙여주면 된다.
2. 변수 타입 지정
bash 변수는 문자열만 저장한다.
다만, 여타 프로그래밍 언어와 같이 변수 자료형 타입을 미리 지정해주는 문법도 존재한다.
declare -r var1(읽기 전용 타입=상수 const)
declare -i number(정수형 타입)
declare -a indices(배열 타입)
delcare -A map(연관 배열 map 타입)
delcare -f(함수 타입)
delcare -x var3(환경변수export 지정)-> 스크립트 외부 환경에서도 이 변수를 쓸 수 있게 해준다.
3. 환경변수
쉘 스크립트에서 변수 명 앞에 export를 붙여주면 환경변수로 설정되어 자식 스크립트에서 사용가능하다.
다만, 환경변수 사용시 시스템에 미리 정의된 예약변수와 변수명이 겹치지 않게 주의하자
4.예약변수
쉘 스크립트에서 사용자가 정해서 만들 수 없는 이미 정의된 변수가 존재한다
이 변수명을 피해서 스크립트를 작성해야한다.
HOME - 사용자 홈 디렉토리
PATH - 실행파일의 경로
LANG - 프로그램 실행 시 지원되는 언어
SHELL - 사용자가 로그인 시 실행되는 쉘
USER - 사용자의 계정이름
FUNCNAME - 현재 실행되고 있는 함수 이름
TERM - 로그인 터미널
2. 환경변수
2-1. path 환경변수에 경로 추가하기
1. 원래 ls 명령어도 전체 경로를 입력해야 함.
2. 환경변수 path 에 등록되어있기에, 그냥 ls만 눌러도 실행됨.
- ls 를 누르고, 엔터를 치면 path 에서 첫 번째 경로부터 확인을 한다.
- 따라서 hello.sh 도 경로를 등록해두면, 그냥 파일명만 입력해도 실행이 가능하다.




2-2. 환경변수를 영구적으로 사용하기
export를 통해 추가한 경로는 로그인을 새롭게 할 때마다 초기화됨.
사용자 홈 디렉터리의 .bashrc 파일에 path 환경변수를 등록해 영구적으로 사용함.


이후에는 hello.sh 파일의 경로를 루트로 변경(cd/) 해도 그대로 바로 실행
3. 쉘 스크립트 위치 매개변수
3-1. 명령어 결과를 변수에 저장하기
쉘 스크립트 내에서 다음과 같은 형식으로 명령어 실행결과를 출력할 수 있음
명령어 결과를 변수에 저장할 떄, 쉘 스크립트에서는 쉘 프롬프트에서 이용하는 모든 명령어를 그대로 사용할 수 있고, 필요하다면 그 결과를 변수에 담아 사용할 수 있음.

3-2. 쉘 스크립트의 위치 매개변수 $
프로그램에서 실행할 때 인자를 주듯 쉘 스크립트도 역시 그렇게 할 수 있다.
실행한 스크립트의 이름은 ${0}, 그 이후는 전달받은 인자값들이다.
명령어 단독사용 대신, 옵션과 인자를 이용해 명령어를 더 풍부하게 이용가능
1. 위치 매개변수 : 쉘 스크립트에 인자를 전달할 때, 인자의 위치에 따라 참조하는 변수

2. 위치 매개변수로 인자를 받아 출력하는 스크립트
다음과 같이 스크립트를 작성하고, 인자로 apple, banana, cherry 값을 추가해 스크립트를 작성

3-3. 위치 매개변수 응용하기
-du 명령어를 통해, 사용자로 부터 입력받은 디렉터리 사용량을 출력
du -s (요약해서 보여줌)
du -sh(가독성좋게 보여줌)
permission denied- 사용자에 따라 이 디렉터리에 접근할 수 없을 경우
-> 이 오류를 표시하지 않기 위해 리다이렉션 2>/dev/null(숫자는 2 표준에러임. 표준에러를 파일로 전달하지 않고 무시하라)

4. 쉘 스크립트의 사용자 입력과 출력
4-1. echo 명령어의 기본동작
일반적으로 echo 명령어를 사용하면 문자열을 출력하고, 줄바꿈을 자동으로 실행
사용자의 입력을 그 다음줄에서 받아야하는 문제가 발생

4-2. echo 명령어의 줄바꿈 제거 옵션 -n
문자열 출력 후 줄바꿈을 하지 않아, 우측에서 사용자 입력이 가능하다.=printf 도 같은 기능을 한다.

1. read 명령어와의 조합
echo -n 옵션을 사용해서 사용자가 어떤 입력을 받게 할 것인지
name 에 입력받은 문자를 저장하는 변수
- echo, read 를 한줄에 두기
- read 명령어에 셸 변수명을 입력하지 않은 경우
read 명령어 뒤에 셸 변수명을 사용하지 않으면 $REPLY 변수에 사용자 입력 값이 자동 저장


4-3. 쉘 스크립트에서 형식에 맞춰 출력하기
printf 명령어
형식에 맞춰 문자열을 출력하기 위한 명령어로 명령어, 문자열 형식, 출력 값으로 구성

문자열 형식 내의 %s %d 는 뒤에 있는 출력 값으로 대체된다.
사용자 입력값 또는 연산결과, 변수에 저장된 값 등이 %s %d를 대신해 출력된다

%f는 소수점 아래 6자리가 기본임. 만약 2쨰자리까지 출력하고 싶으면, 뒤에 숫자를 입력하면 됨.
'리눅스' 카테고리의 다른 글
| #64. 쉘 스크립트의 조건문과 반복문 (0) | 2026.06.17 |
|---|---|
| #61. 프로세스와 셸 변수와 환경변수 (0) | 2026.06.16 |
| #56. 리눅스 명령어 (0) | 2026.05.18 |
| #55. 가상화 (0) | 2026.05.18 |