shell script
# source <shell_script> 와 ./<shell_script> 의 차이점
- source <shell_script> : 현재 세션에서 실행되는 것처럼 실행
- ./<shell_script> : 현재 쉘이 하위셀을 fork 한 후에 자식셀이 shell_script 의 명령을 처리후 exit
# function
function <function_name> or function() 으로 선언
unset -f <function_name> : 함수 선언 해제
declare -f : 정의된 함수 선언 확인
declare -F : 함수명만 확인할 경우
** builtin : 같은 이름의 함수가 있는 경우 함수가 아닌 bash 의 내장 명령을 사용하도록 강제하는 지시어이다.
type -all <command> : command 에 해당하는 내용에 대한 모든 정의 출력
type -path <command> : command 가 shell / file 인 경우 해당 path 출력
type -type <command> : command 가 alias , keyword, function, builtin, file 인지 체크하여 하나를 출력
# 위치 매개변수 (postional parameter)
$0 : shell script name
$1, $2, $3 : script 실행시 명령행 인자
$* : 모든 매개변수, IFS 의 첫째 글자로 구분해서 출력된다. func "$*" 하게 되면 func은 매개변수를 하나로 받은 셈이 된다.
$@ : 모든 매개변수, 각 매개변수에 대해서 각각 따로 적용됨. 함수 호출시 func "$@" 로 하게 되면 func은 매개변수의 개수만큼의 인자를 받게 된다.
$# : 매개변수의 개수
$var , ${var} 가능 : 왜? $10 을 구분하기 위해서 ${10} 으로 사용 10번째 인자를 표시함.
# 문자열 연산자
문자열 연사자 문법 : "문자열 연산을 표시하는 특수문자를 해당 변수명과 오른쪽 중괄호 사이에 끼워 넣고, 연산자에 필요한 인자는 연산자 오른쪽에 끼워 넣는다" 는 기본 생각으로 만들어짐
1. 대체 연산자
${varname:-word} |
varname 이 존재하고 값이 NULL이 아니면 varname 을 return. 그렇지 않으면 word 를 리턴 --> 정의하지 않은 변수를 사용할 경우 오류발생시키지 않고, 기본값으로 대체하려고 할 때 사용 |
${varname:=word} |
varname 이 존재하고 값이 NULL이 아니면 varname 을 return. 그렇지 않으면 word 를 리턴. varname 에 위치변수와 매개변수가 올 수 없다. 이 점을 빼고 :- 연산과 동일하다. |
${varname:?message} |
varname 이 존재하고 값이 NULL 이 아니면 varname 을 return. 그렇지 않으면 message 를 출력하고 현재 실행할 명령이나 스크립트를 무시함. message 를 생략하면 parameter null or not set 을 출력함. --> 정의하지 않은 변수를 사용할 경우 메세지를 출력하고 종료하려고 할 때 사용 |
${varname:+word} |
varname 이 존재하고 값이 NULL 이 아니면 word 를 return. 그렇지 않으면 NULL을 return. --> 변수의 존재유무를 검사하려고 할 때 사용 |
${varname:offset} ${varname:offset:length} |
하위 문자열(substrring) 확장을 수행. --> 문자열의 일부를 돌려주기 위함. |
2. 패턴과 패턴 비교
주로 path 에서 filename 을 얻어낼때 많이 사용한다.
${varname#pattern} : pattern 이 varname 의 값 시작 부분과 일치하는 부분이 있으면 이 중 가장 짧은 부분을 삭제하고 나머지부분을 return.
${varname##pattern} : pattern 이 varname 의 값 시작부분부터 일치하는 가장 긴 부분을 삭제하고 나머지를 return
${varname%pattern} : pattern 이 varname 의 값 끝부분부터 일치하는 가장 짧은 부분을 삭제하고 나머지를 return
${varname%%pattern} : pattern 이 varname 이 값 끝부분부터 일치하는 가장 긴 부분을 삭제하고 나머지를 return
${varname/pattern/string} : pattern 이 varname 에서 처음 일치하는 부분을 string 으로 변경
${varname//pattern/string} : pattern 이 varname 에서 일치하는 모든 부분을 string 으로 변경
3. 길이 연산
${#varname} : varname 의 문자열 길이를 return
# 명령 대체
명령(command) 의 표준출력을 변수의 값으로 사용할 수 있는 강력한 기능
문법 : $(Unix command)
'IT 기술 > 프로그래밍관련' 카테고리의 다른 글
[bash] 5th - Trap Statement (0) | 2013.08.01 |
---|---|
[linux] openat / open 의 차이점 (0) | 2012.12.28 |
[bash] 4th - 명령행 옵션과 유형 변수 (0) | 2012.09.26 |
[bash] 3rd - 흐름제어 (0) | 2012.08.27 |
bash 활용 첫번째 정리 - 명령행 편집 (0) | 2012.08.08 |