Shell?
운영체제의 커널과 사용자 사이를 이어주는 역할을 하며, shell은 사용자의 명령어(CMD)를 운영체제가 이해 할 수 있게 지시 해준다.
변수
데이터 또는 Shell 명령어 실행 결과를 담는 그릇이다. 선언된 변수는 기본적으로(default) 전역변수(Global Variable) 이다.
단, 함수내에서는 지역변수 선언이 가능하며 변수명 앞에 'local' 키워드를 붙여주면 된다.
데이터형(Type)은 없다. 무조건 문자열의 형태로 데이터가 저장된다.
형식
여기서 다른 프로그래밍 언어와 매우 차이를 보이는 점! 쉘 스크립트는 띄어쓰기에 민감하다. 변수 선언 시, 변수이름과 대입연산자 그리고 값 사이에 띄어쓰기를 넣는다면 에러가 발생한다.
#!/bin/bash
#변수이름=값
var=value # 쉘에서는 기본적으로 모두 문자열로 처리된다.
var1="Hello shell" # 띄어쓰기가 있는 경우, shell을 command로 인식한다.
# 그래서 쌍따움표를 넣어야 한다.
echo $var1 ${var1} # $var1은 ${var1}을 짧게 쓴 표현이다.
위치 매개 변수(Positional Parameters)
쉘 스크립트 실행 시, 매개 변수를 전달하면 쉘에서 해당하는 매개 변수에 접근 할 수 있는 규칙이 있다.
특수 매개 변수(Special Parameters)
매개 변수 확장
선언한 변수를 사용할 때는 ${변수명}
으로 호출 할 수 있다.
그리고 중괄호 안에서 많은 옵션들을 이용해서 변수의 값을 조작 할 수 있다.
변수 디폴트 값
${변수명:=디폴트 값}
: 변수가 미선언 또는 Null 일 때 기본 값 지정, 위치 매개 변수 사용 가능
echo ${string:=Hello} # output : "Hello"
문자열 추출(start/end)
${변수명:위치:길이}
: 위치 다음부터 길이 만큼 문자열 추출
string="abc-efg-123-abc"
echo ${string:4:3} # output : "efg"
문자열 추출(only start)
${변수명:위치}
: 위치 다음부터 문자열 추출
string="abc-efg-123-abc"
echo ${string:4} # output : "efg-123-abc"
비교문
if문
-조건문이 참(true)일 경우에만 실행되는 문장
if [ Condition ]; then
# Execute Sentences
fi
# 빈 문자열 비교
string="abc"
if [ -n $string ];
then
echo "string is not empty"
else
echo "string is empty"
fi
check_result=""
function existedTableNmAtTableFile (){
if [ -f "$table_stat_file" ];
then
check_result=`cat $table_stat_file | grep $1 | awk -F '|' '{print $2}'
else
check_result=""
fi
}
existedTableNmAtTableFile $1
if [ ! -n "$check_result" ];
then
echo "Is Empty"
else
echo "Isn't Empty"
fi
foo=bar
if [ "$foo" = bar ];
then
echo "true"
else
echo "false"
fi
# print "true"
if else문
if elif else문
제어문
반복문
배열
함수