개발자 노트
PATH에서 프로그램 검색 본문
"#!" 는 스크립트를 실행할 셸을 지정하는 선언문이다.
!앞에 #이 붙는다고해서 주석으로 착각하지 말 것!
셸 파라미터
$0 : Script를 실행시킬 때 프로그램의 이름이 포함된 첫 번째 문자열이 저장된다.
$1, ...$N : argument들이 순서대로 저장된다. 위치 매개변수( Positional Parameter )라고 불린다.
$? : 가장 최근에 실행된 포그라운드 파이프라인의 종료상태를 가지고 있다.
환경변수
$IFS : 입력필드 구분자, Shell 상에서 입력을 읽어들일 때 글자를 구분하기 위한 목적으로 사용되는 문자 목록, 보통은 스페이스, 탭, 개형문자이다.
for문
[사용법]
for 변수 in 반복될 인수
do
실행문
done
[예제]
for x in {1..5}
do
echo "$x"
done
for x in $(ls /home)
do
echo "$x는 홈 디렉토리내에 존재합니다"
done
if 문
if로 시작해서 fi로 끝난다.
[사용법]
단일 조건 일때 ( 조건이 참이면 실행문 A를 실행하라. )
if [ 조건 ] ( = if [ 조건 ]; then 한줄로도 사용한다 )
then
실행문 A
fi
두가지 조건일때 ( 조건이 참이면 실행문 A, 거짓이면 B를 실행하라 )
if [ 조건 ]; then
실행문 A
else
실행문 B
fi
세 가지 조건일 때 ( 조건이 참이면 실행문 A, 아니면 B, 그것도 아니면 C를 실행하라 )
if [ 조건 ]; then
실행문 A
elif
실행문 B
else
실행문 C
fi
[예제]
============================
#!/bin/sh
if [ -d test ]; then
echo " test is directory "
else
echo " test is not directory "
fi
============================
결과 : 만약에 test가 디렉토리라면 "test is directory"가 출력되고 디렉토리가 아니라면 “test is not directory" 가 출력된다.
파일 검사 연산자
-x : 파일이 존재하고 실행 가능한 경우 true
산술 비교 연산자
val1 –ne val2 |
negative, 변수 val1과 변수 val2 다른 경우 true |
함수 작성
함수를 사용하려면 스크립트의 시작부에 정의가 되어 있어야 한다.
함수 명을 쓰면 함수가 호출이 되는데 주의할 것은 호출 코드가 함수 코드보다 반드시 뒤에 있어야 된다. 함수 코드 보다 앞에서 호출 시 오류가 발생한다.
함수의 형식은 다음과 같다.
함수명()
{
함수 내용
}
함수 호출은 인자가 없는 함수는 함수명만 호출하면 되고, 인자가 있는 함수는 함수명 뒤에 인자를 나열해주면 된다.( 괄호는 쓰지 않는다.)
함수 내부에서 넘겨받은 인자를 쓰는 방법은 쉘 프로그램이 인자를 쓰는 방법과 같다.($1, $2, …)
case문
case문은 여러 가지 조건이 있을 때 특정한 조건을 선택하고자 할때 많이 사용된다.
case 문은 case로 시작해서 esac 로 끝나게 된다.
사용법
case x(변수 : 원하는대로 지정) in
select [ | select2 ] )
실행문 ;;
* )
실행문 ;;
esac
===================================== |
변수 분할 방법
POSIX : ${var%${var#?}}
${var%${var#?}} 는 두 개의 중첩된 문자열 슬라이스이다.
안쪽의 호출인 ${var#?} 는 변수 var의 첫 문자를 제외한 모든 것을 추출한다.
(?는 하나의 문자열에 해당하는 정규 표현이다)
다음으로 ${var%pattern} 호출은 일단 지정된 패턴이 안쪽의 호출에 적용되고나면 남아있는 모든 것을 가지고 서브문자열을 생성한다.
즉 안쪽 호출에서 제외된 문자를 가지고 서브문자열을 생성하는 것이다.
Bash와 Ksh : ${varname:start:size}
varname에서 start가 가리키는 문자를 시작으로 size가 가리키는 수만큼의 문자를 요구한다.
ex) ${varname:0:1}
위의 예시는 varname의 첫 번째 문자로 이루어진 서브문자열을 생성한다.
시스템호출 : $(echo $var | cut -c1)
변수 var의 첫 번째 문자를 추출한다.
# 참고
http://storycompiler.tistory.com/101
http://www.itmoa.co.kr/gzboard.php?code=techqna&mode=gz_read&Page=5&no=222
http://m.blog.naver.com/baraem2005/20168719811
http://anti1346.egloos.com/v/4526423
http://blog.daum.net/_blog/BlogTypeView.do?blogid=02Ql9&articleno=171
https://wiki.kldp.org/HOWTO/html/Adv-Bash-Scr-HOWTO/exit-status.html
셸 스크립트 101가지 예제로 정복하는;Dave Taylor
'▶ INBOX ◀' 카테고리의 다른 글
Ch01_PC구조부터 어셈블리 입문까지 (0) | 2016.09.22 |
---|---|
입력확인: 알파벳과 숫자만으로 구성된 입력 허용 (0) | 2016.09.22 |
구조체 프로그래밍 (0) | 2016.09.20 |
[Linux] 명령어 모음 (0) | 2016.09.20 |
가변인자 함수 (0) | 2016.09.20 |