Shell 확인
echo $0
echo $SHELL
Shebang
Shebang
#!/usr/bin/bash
- 쉘 선언문
- 어떤 쉘로 스크립트를 실행할지 정의
- 가장 첫 줄에 정의한다
- 종류
- sh (초기)
- ksh (sh 확장형)
- csh (c언어 기반)
- bash (sh와 대부분 호환)
실행
- bash로 실행하거나, 아니면 실행 권한이 필요
- bash [script.sh] : bash로 실행
- chmod 755 [script.sh] : script.sh 파일에 실행 가능 권한 부여
권한 부여 전
권한 부여 후
쉘 변수
변수 특징
- 대소문자 구별
- 문자로 시작
- 변수에는 모든 값이 문자열로 저장 (자료형 기입 X)
- 변수를 사용할 때에는 $를 붙인다
- 변수에 값을 대입할 때에는 $를 붙이지 않는다
- 변수 생성 시 = 앞 뒤로 공백이 없어야 한다
변수 관련 명령어
- set : 셸 변수를 출력
- env : 환경 변수를 출력
- unset : 선언된 변수 제거
전역 변수 (global variable)
- 기본적으로 전역변수
- 그냥 쓰면 된다
- name=ohs (name이라는 변수에 ohs라는 문자열 삽입)
지역 변수 (local variable)
- 함수 안에서만 사용
- 변수명 앞에 local 붙이기
- local name=ohs
환경 변수 (environment variable)
- 변수명 앞에 export 붙이기
- 환경 변수는 자식 스크립트에서도 사용 가능
- 예약 변수와 변수명이 겹치지 않아야 한다
예약 변수 (reserved variable)
- 시스템에 미리 정의되어 있는 변수
HOME : 사용자 홈 디렉토리
PATH : 실행 파일의 경로
LANG : 프로그램 실행 시 지원되는 언어
UID : 사용자의 UID
SHELL : 사용자가 로그인시 실행되는 쉘
USER : 사용자의 계정 이름
FUNCNAME : 현재 실행되고 있는 함수 이름
TERM : 로그인 터미널
매개 변수 (parameter)
$0 : 실행된 셸 스크립트명
$1 : 스크립트에 넘겨진 첫 번째 인자(argument)
$2 : 스크립트에 넘겨진 두 번째 인자
$숫자 : 그 이후 해당되는 인자
$# : 인자 개수
$* : 스크립트에 전달된 인자 전체를 하나의 변수에 저장하면 IFS 변수의 첫 번째 문자로 구분
$@ : $*와 동일한데 다른 점은 IFS 환경 변수를 사용하지 않는다는 점.
$! : 실행을 위해 백그라운드로 보내진 마지막 프로그램 프로세스 번호
$$ : 셸 스크립트의 PID
$? : 실행한 뒤의 반환 값 (백그라운드로 실행된 것 제외)
쉘 산술 연산
종류 3가지
- expr
- let
- $(())
expr
- ` `로 감싸주기
- 연산자 사이에 공백 필요
- 괄호 및 곱셈 시 \로 이스케이프 문자 처리 필요
let
$(())
쉘 조건문
if문
- fi로 if문의 끝을 알려야 한다
- 조건식은 대괄호 [ ] 사이에 쓴다
- 대괄호 [ ] 와 조건식 사이엔 공백이 있어야 한다
- else if 대신 elif 사
# 방법 1
if [ $num1 == $num2 ]
then
echo $((num1+num2))
else
echo $num1
fi
#방법 2
if [ $num1 == $num2 ]; then
echo $((num1+num2))
else
echo $num1
fi
비교 연산
- 문자1 == 문자2 : 문자1 과 문자2가 일치
- 문자1 != 문자2 : 문자1 과 문자2가 일치하지 않음
- -z 문자 : 문자가 null 이면 참
- -n 문자 : 문자가 null이 아니면 참
- 값1 -eq 값2 : 값이 같음(equal)
- 값1 -ne 값2 : 값이 같지 않음(not equal)
- 값1 -lt 값2 : 값1이 값2보다 작음(less than)
- 값1 -le 값2 : 값1이 값2보다 작거나 같음(less or equal)
- 값1 -gt 값2 : 값1이 값2보다 큼(greater than)
- 값1 -ge 값2 : 값1이 값2보다 크거나 같음(greater or equal)
shell command
command substitution
- command를 실행하고 결과값을 반환
- 사용 방법
- $()
- ` ` (백틱, 역따옴표)
쉘 주석
한 줄 주석
#echo 10
한 블록 주석
: << "END"
echo 10
END
쉘 이스케이프 문자
쉘 이스케이프 문자
- \f : 앞 문자열만큼 열을 밀어서 이동
- \n : 줄바꿈
- \r : 앞 문자열의 앞부분부터 뒷문자열만큼 대체하고 반환
- \t : 탭
예시
참고
🐧 BASH 쉘 프로그래밍 문법 마스터 💯 총정리
Shell Script 란 Shell Script는 Shell이나 command line 인터프리터에서 구동되도록 작성된 스크립트다. 윈도우에서는 batch(배치파일, .bat) 을 한번쯤은 본적이 있을 것이다. bat 파일을 실행하면 프로그램이
inpa.tistory.com