참고
Shell Script 란
Shebang
NOTE
쉘 스크립트를 작성할 때 첫 번째행에 작성해주는 것!
#!/usr/bin/bash
# ...
Bash
복사
•
어떤 쉘로 스크립트를 실행할지 정의하는 곳
•
python과 같은 다른 파일이 아닌, bash로 실행시키라는 의미
Shell 변수선언
NOTE
변수의 타입에는 로컬, 전역, 환경, 매개변수 등 다양한 변수가 존재한다!
•
변수는 대,소문자를 구별한다.
•
변수에는 모든 값을 문자열로 저장한다.
•
변수에는 자료형을 기입하지 않는다.
•
값을 넣을 때는 $기호를 사용하지 않고, =앞뒤로 공백이 없어야 한다.
◦
data=”abcd”
전역 변수 & 지역 변수
NOTE
쉘 스크립트를 작성할 때 첫 번째행에 작성해주는 것!
## 전역변수
name="inpa" # 변수 선언 및 대입
pass=123123 # 따옴표로 감싸든 말든 문자열임
## 지역변수
function string_test(){
# local을 붙이면 지역변수로 인식 (안붙이면 전역변수에 덮어씌어짐)
local string="hello local @@" # 함수내에서만 사용됨
echo ${string}
}
string_test
Bash
복사
변수 타입 지정
NOTE
쉘 스크립트를 작성할 때 첫 번째행에 작성해주는 것!
# -r 읽기 전용 (상수)
declare -r var1
readonly var1
# -i 정수형
declare -i number
number=3
echo "number = $number"
# -a 배열
declare -a indices
# -A 연관배열(MAP)
declare -A map
Bash
복사
•
Bash는 기본적으로 문자열만 저장한다.
•
하지만 여타 프로그래밍 언어같이 변수 자료형을 미리 지정해주는 문법도 존재한다.
환경 변수
NOTE
# 환경 변수 선언
export hello_world="global hello world"
# 자식 스크립트 호출은 스크립트 경로을 쓰면된다.
bash export_test.sh
Ruby
복사
#!/usr/bin/bash
echo ${hello_world}
Ruby
복사
export.sh 파일
•
export를 붙여주면 환경변수로 설정되어 자식 스크립트에서 사용이 가능!
매개 변수
NOTE
echo "script name : ${0}"
echo "매개변수 갯수 : ${#}"
echo "전체 매개변수 값 : ${*}"
echo "전체 매개변수 값2 : ${@}"
echo "매개변수 1 : ${1}"
echo "매개변수 2 : ${2}"
Bash
복사
bash argument.sh 가 나 다 라 마 바 사
Bash
복사
종류 | 설명 |
$0 | 실행된 셸 스크립트명 |
$1 | 스크립트에 넘겨진 첫 번째 아규먼트 |
$2 | 스크립트에 넘겨진 두 번째 아규먼트 |
$3 S4 등등 .. 이후 $숫자 | 그 이후 해당되는 아규먼트 |
$# | 아규먼트 개수 |
$* | 스크립트에 전달된 인자 전체를 하나의 변수에 저장하면 IFS 변수의 첫 번째 문자로 구분 |
$@ | $*와 동일한데 다른 점은 IFS 환경 변수를 사용하지 않는다는 점. |
$! | 실행을 위해 백그라운드로 보내진 마지막 프로그램 프로세스 번호 |
$$ | 셸 스크립트의 PID |
$? | 실행한 뒤의 반환 값 (백그라운드로 실행된 것 제외) |
Shell 조건문 & 반복문
조건문
NOTE
num1=10
num2=10
# 비교 연산
if [ ${num1} -lt ${num2} ]; then # "-lt", A가 B보다 작으면 True
echo "yes"
elif [ ${num1} -eq ${num2} ]; then # "-eq", A와 B가 서로 같으면 True
echo "bbb"
else
echo "no"
fi
# 이중 소괄호 쓰면 논리 연산자 사용가능
if((${num1} < ${num2})); then
echo "yes"
elif(( ${num1} == ${num2})); then
echo 'bbb'
else
echo 'no'
fi
Bash
복사
비교연산
값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)
Bash
복사
논리연산
조건1 -a 조건2 # AND
조건1 -o 조건2 # OR
조건1 && 조건2 # 양쪽 다 성립
조건1 || 조건2 # 한쪽 또는 양쪽다 성립
!조건 # 조건이 성립하지 않음
true # 조건이 언제나 성립
false # 조건이 언제나 성립하지 않음
Bash
복사
반복문
NOTE
# 초기값; 조건값; 증가값;
for ((i=1; i<=4; i++)); do
echo $i
done
Bash
복사
# for in 문법
for x in 1 2 3 4 5
do
echo "${x}"
done
data="1 2 3 4 5"
for x in $data
do
echo "${x}"
done
# 배열을 사용한 반복문
arr=(1 2 3 4 5)
for i in "${arr[@]}" # arr[@] : 배열 전체 출력
do
echo "${i}"
done
Bash
복사