[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이 아닌 경우