■ 파일 관련 test 연산자
연산자 |
설명 (다음의 경우 참) |
-e file |
파일이 존재하는 경우 |
-d file |
파일이 존재하고 디렉토리인 경우 |
-f file |
파일이 정규 파일인 경우 |
-b file |
파일이 존재하고 블록 디바이스 파일인 경우 |
-c file |
파일이 존재하고 문자 디바이스 파일인 경우 |
-p file |
파일이 존재하고 파이프나 이름이 있는 파이프(FIFO 파일)인 경우 |
-S file |
파일이 존재하고 소켓인 경우 |
-L file |
파일이 존재하고 심볼릭 링크인 경우 |
-r file |
파일이 존재하고 읽을 수 있는 경우 |
-w file |
파일이 존재하고 쓰기 가능한 경우 |
-x file |
파일이 존재하고 실행할 수 있는 경우 |
-u file |
파일이 존재하고 SetUID 비트가 설정된 경우 |
-g file |
파일이 존재하고 SetGID 비트가 설정된 경우 |
-k file |
파일이 존재하고 Sticky 비트가 설정된 경우 |
-s file |
파일이 존재하고 빈 파일이 아닌 경우 |
fileA -nt fileB |
fileA가 fileB보다 더 나중에 생성된 경우 |
fileA -ot fileB |
fileA가 fileB보다 더 이전에 생성된 경우 |
fileA -ef fileB |
fileA과 fileB가 같은 파일을 가리키고 있는 경우 |
■ 문자열 관련 test 연산자
연산자 |
설명 |
stringA = stringB |
stringA가 stringB와 같은 경우 |
stringA != stringB |
stringA가 stringB와 같지 않은 경우 |
stringA < stringB |
stringA가 stringB보다 사전순서로 먼저 나오는 경우 |
stringA > stringB |
stringA가 stringB보다 사전순서로 나중에 나오는 경우 |
-z string |
string의 길이가 0인경우 |
-n string |
string이 NULL이 아닌 경우 |
■ 산술연산 test 구문
연산자 |
설명 |
exprA -eq exprB |
산술연산 exprA와 exprB가 같은 경우(-eq: equal) |
exprA -ne exprB |
산술연산 exprA와 exprB가 같지 않은 경우(-n: not equal) |
exprA -lt exprB |
산술연산 exprA가 exprB보다 작은 경우(-lt: less than) |
exprA -le exprB |
산술연산 exprA가 exprB보다 작거나 같은 경우(-le: less equal) |
exprA -gt exprB |
산술연산 exprA가 exprB보다 큰 경우(-gt: great than) |
exprA -ge exprB |
산술연산 exprA가 exprB보다 크거나 같은 경우(-ge: great equal) |
exprA -a exprB |
exprA가 참이고 exprB가 참인경우(-a: and) |
exprA -o exprB |
exprA가 참이거나 exprB가 참인경우(-o: or) |
■ test 구문에서 사용되는 연산자
① 논리 부정 연산자(NOT)
다른 연산자와 함께 사용되며 파일 test에 이용된다.
if [ ! -s file ] ; then echo "file size is zero" fi |
② 괄호(Grouping)
실행 순서를 변경하기 위해 사용하며 괄호의 양쪽에는 공백이 필요하다.
그리고 의미없는 순수한 괄호의 의미를 사용하기 위해 괄호 앞에 백슬래쉬를 넣는다.
if find / ∖( -perm -4000 ∖) -o ∖( -perm -2000 ∖) -type f > /dev/null ; then echo "SetUID or SetGID Found" fi |
③ 논리곱 연산자(AND)와 논리합 연산자(OR)
fi [ ∖( "$VAR" -ge 0 ∖) -a ∖( "$VAR" -lt 10 ∖) ] ; then echo "$VAR is small number" fi if [ -n "$str" -o -r $HOME/.profile ] ; then echo "Hello, Test." fi |
④ 연산자 우선 순위
괄호 > 논리부정연산자(NOT) > 논리곱 연산자(-a) > 논리합 연산자(-o)
'Linux > ShellScript' 카테고리의 다른 글
ANSI Escape(ESC) character (0) | 2010.11.02 |
---|---|
쉘내부 명령어 (0) | 2010.10.28 |
[script]directory tree로 보여주기 (0) | 2010.05.29 |
[Script] 파일 점검 프로그램 (0) | 2010.05.23 |
쉘(Shell) 환경 (0) | 2010.05.16 |