[BASH] Builtin: test, [

CS/Shell/Perl/Python 2010. 8. 5. 09:58
참조

Evaluate a conditional expression expr. Each operator and operand must be a separate argument. Expressions are composed of the primaries described below in Bash Conditional Expressions. test does not accept any options, nor does it accept and ignore an argument of -- as signifying the end of options. 

When the [ form is used, the last argument to the command must be a ]. 

Expressions may be combined using the following operators, listed in decreasing order of precedence. The evaluation depends on the number of arguments; see below. 

! expr
: True if expr is false. 

( expr )
: Returns the value of expr. This may be used to override the normal precedence of operators. 

expr1 -a expr2
: True if both expr1 and expr2 are true. 

expr1 -o expr2
: True if either expr1 or expr2 is true.


산술 비교

val1 -eq val2 
: 변수 val1과 변수 val2 같은 경우 true

val1 -ne val2 
: 변수 val1과 변수 val2 다른 경우 true

val1 -qt val2 
: 변수 val1이 변수 val2 보다 큰 경우 true

val1 -lt val2 
: 변수 val1이 변수 val2 보다 작은 경우 true

val1 -ge val2 
: 변수 val1이 변수 val2 보다 크거나 같은 경우 true

val1 -le val2 
: 변수 val1이 변수 val2 보다 작거나 가은 경우 true


파일 검사

-e 
: 존재하는 파일인 경우 true

-b 
: 파일이 존재하고 블록장치(플로피, 시디롬, ...)인 경우 true

-c 
: 파일이 존재하고 캐릭터 장치 파일인 경우 true

-d 
: 파일이 존재하고 디렉토리인 경우 true

-h
: 파일이 심볼릭 링크

-L
: 파일이 심볼릭 링크

-S
:파일이 소켓

-t
: 파일 디스크립터가 터미널 디바이스와 연관이 있음
: 스크립트의 표준입력([ -t 0 ])이나 표준출력([ -t 1 ])이 터미널인지 아닌지를 확인하는데 쓸 수 있습니다.

-f 
: 파일이 존재하고 보통 파일(디렉토리나 디바이스 파일이 아님)인 경우 true

-h 
: 파일이 존재하고 한 개 이상의 심볼릭 링크가 설정된 경우 true

-p 
: 파일이 존재하고 파이프인 경우 true

-s 
: 파일이 존재하고 0보다 큰 경우 true

-g 
: 파일이 존재하고 SetGID가 설정된 경우 true

-u 
: 파일이 존재하고 SetUID가 설정된 경우 true

-k 
: 파일이 존재하고 Sticky bit가 설정된 경우 true

-r 
: 파일이 존재하고 읽기 가능한 경우 true

-w 
: 파일이 존재하고 쓰기가 가능한 경우 true

-x 
: 파일이 존재하고 실행 가능한 경우 true

-O
: 자신이 소유자임

-G
: 그룹 아이디가 자신과 같음

-N
: 마지막으로 읽힌 후에 변경 됐음

file1 -nt file2
: file1 파일이 file2 파일보다 최신임

file1 -ot file2
: file1 파일이 file2 파일보다 예전것임

file1 -ef file2
: file1 파일과 file2 파일이 같은 파일을 하드 링크하고 있음

문자열 비교
-z string 
: 문자열의 길이가 0인 경우 true

-n string 
: 문자열의 길이가 0이 아닌 경우 true

string1 = string2 
: 문자열 string1과 string2가 일치하는 경우

string1 != string2 
: 문자열 string1과 string2가 일치하지 않는 경우

string : 문자열이 NULL이 아닌 경우

: