test (Unix)
Other names | [ |
---|---|
Developer(s) | Various open-source and commercial developers |
Operating system | Unix, Unix-like, Plan 9, IBM i |
Platform | Cross-platform |
Type | Command |
License | coreutils: GPLv3+ |
test는 조건부 표현식을 평가하는 유닉스, Plan 9, 및 유닉스-계열 운영 시스템에서 볼 수 있는 명령줄 유틸리티입니다. test는 1981년 UNIX System III에서 쉘 내장 명령으로 바뀌었고 동시에 대안적인 이름 [ 아래에서 사용할 수 있습니다.[1]
Overview
유닉스에서 test
명령은 expression
매개변수를 평가합니다. 가장 최근의 쉘 구현에서, 외부 버전이 여전히 존재하더라도, 그것은 쉘 내장입니다. 명령의 두 번째 형식에서, [ ]
(대괄호)는 공백에 의해 둘러싸여야 합니다 (이것은 [
은 프로그램이고 POSIX 호환 쉘은 프로그램 이름과 인수 사이에 스페이스를 요구하기 때문입니다). 우리는 C 쉘에서 파일 이름을 명시적으로 테스트해야 합니다. 파일-이름 대체 (글로빙)는 쉘 스크립트를 종료하게 되는 원인이 됩니다.
test
명령은 ksh88에서 도입된 [[
예약어와 혼동되어서는 안 됩니다. 후자는 명령이 아니라 ksh88 구문의 일부이고 glob 표현식에 파일-이름 대체를 적용하지 않습니다.
GNU coreutils에 번들된 test
버전은 Kevin Braunsdorf와 Matthew Bradburn에 의해 작성되었습니다.[2] test 명령은 IBM i 운영 체제에도 이식되었습니다.[3]
Syntax
test expression
또는
[ expression ]
Arguments
다음 인수는 이 매개변수를 구성하기 위해 사용됩니다:
-e FileName - FileName이 존재합니다
객체 (파일 또는 문자열)가 존재하고, 지정된 조건이 참이면, 모든 남아있는 인수는 참을 반환합니다.
-b Filename - 지정된 FileName이 존재하고 블록 특수 파일이면 True 탈출 값을 반환합니다. -c FileName - FileName이 문자 특수 파일입니다. -d FileName - FileName이 디렉토리입니다. -f FileName - FileName이 정규 파일입니다. -g FileName - FileName의 집합 그룹 ID 비트가 설정됩니다. -h FileName - FileName이 심볼릭 링크입니다. -k FileName - FileName의 스티키 비트가 설정됩니다. -L FileName - FileName이 심볼릭 링크입니다. -p FileName - FileName이 이름-지은 파이프 (FIFO)입니다. -r FileName - FileName이 현재 프로세서에 의해 읽힐 수 있습니다. -s FileName - FileName이 0보다 큰 크기를 가집니다. -t FileDescriptor - FileDescriptor가 열려 있고 터미널과 결합됩니다. -u FileName - FileName의 집합 사용자 ID 비트가 설정됩니다.
-w FileName - FileName의 쓰기 플래그가 켜져 있습니다. 어쨌든, FileName은 test가 참을 나타내더라도 읽기-전요 파일 시스템에서 쓰기 가능하지 않을 것입니다.
-x FileName - FileName의 실행 플래그가 켜져 있습니다. 만약 지정된 파일이 존재하고 디렉토리이면,True
탈출 값은 현재 프로세스가cd
로 디렉토리를 변경하기 위한 허가권을 가짐을 나타냅니다.
비-표준 Korn Shell 확장:
file1 -nt file2 - file1은 file2보다 새로운 것입니다. file1 -ot file2 - file1은 file2보다 오래된 것입니다. file1 -ef file2 - file1은 file2에 대한 또 다른 이름입니다 - (심볼릭 링크 또는 하드 링크)
String arguments
Perl에서, 이들 섹션은 예약되어 있습니다: eq
는 문자열 연산자이고 ==
는 수치 연산자이고, 다른 것에 대해 계속됩니다.
-n String1 - String1 변수의 길이는 비-영입니다. -z String1 - String1 변수의 길이는 0입니다. String1 = String2 - String1과 String2 변수는 동일합니다. String1 != String2 - String1과 String2 변수는 동일하지 않습니다. String1 - String1 변수가 널 스티링이 아니면 참입니다.
Number arguments
Integer1 -eq Integer2 - Integer1및 Integer2 변수는 대수적으로 같습니다. -ne - 같지 않습니다. -gt - 큽니다. -ge - 크거나 같습니다. -lt - 작습니다. -le - 작거나 같습니다.
Operators
test
인수는 다음 연산자와 함께 조합될 수 있습니다:
! - 단항 부정 연산자 -a - 이진 AND 연산자 -o - 이진 OR 연산자 (-a
연산자는-o
연산자보다 우선 순위가 높습니다) \(Expression\) - 그룹에 대해 괄호는 백슬러시\
로 탈출되어야 합니다.
그룹화를 위한 괄호와 함께, -a
와 -o
연산자는 XSI 확장이고[4] 따라서 이식할 수 없습니다. 이식 가능한 쉘 스크립트에서 같은 효과는 &&
및 ||
연산자와 괄호를 함께 test
의 다중 호출로 연결함으로써 성취될 수 있습니다.
Exit status
이 명령은 다음 종료 값을 반환합니다:
0 - 표현식 매개변수는 참입니다. 1 - 표현식 매개변수는 거짓이거나 누락되었습니다. >1 - 오류가 발생했습니다.
Examples
1. 파일이 존재하지 않거나 빈 것인지 여부를 테스트하기 위해, 다음을 입력하십시오:
if test ! -s "$1"
then
echo $1 does not exist or is empty.
fi
만약 쉘 프로시저에 대한 첫 번째 위치 매개변수, $1에 의해 지정된 파일이 존재하지 않거나, 크기가 0이면, test 명령은 메시지를 표시합니다. 만약 $1이 존재하고 0보다 큰 크기를 가지면, test 명령은 아무것도 표시하지 않습니다.
주목: -s 함수와 파일 이름 사이에는 스페이스가 있어야 합니다.
$1 주위의 따옴표는 만약 $1 값이 널 문자열이면 테스트가 제대로 작동하도록 보장합니다. 만약 따옴표가 생략되고 $1이 빈 문자열이면, test 명령은 오류 메시지를 표시합니다:
test: argument expected.
2. 복잡한 비교를 수행하기 위해, 다음을 입력하십시오:
if [ "$#" -lt 2 ] || ! [ -e "$1" ]
then
exit
fi
만약 쉘 프로시저가 두 개 미만의 위치 매개변수를 지정되거나 $1에 의해 지정된 파일이 존재하지 않으면, 쉘 프로시저가 종료됩니다. 특수 쉘 변수 $#는 이 쉘 프로시저를 시작하는 명령줄에 입력된 위치 매개변수의 숫자를 나타냅니다.
See also
References
- ^ http://www.in-ulm.de/~mascheck/bourne/#system3 Bourne Shell changes with System III
- ^ test(1) — coreutils — Debian buster — Debian Manpages
- ^ IBM. "IBM System i Version 7.2 Programming Qshell" (PDF). Retrieved 2020-09-05.
{{cite web}}
: CS1 maint: url-status (link) - ^ IEEE Std 1003.1, 2004, documentation for
test
Further reading
- Robbins, Arnold; Nelson H. F. Beebe (2005). "6.2.4 The test Command". Classic Shell Scripting: Hidden Commands that Unlock the Power of Unix. O'Reilly Media, Inc. pp. 120–128. ISBN 978-0-596-55526-9.
- Ian Shields (20 February 2007). "Linux tip: Bash test and comparison functions". IBM DeveloperWorks.
- William Shotts (2013). "27 – Flow Control: Branching With if". The Linux Command Line. No Starch Press. pp. 381–390. ISBN 978-1-59327-389-7. (free download)
External links
![](https://upload.wikimedia.org/wikipedia/commons/thumb/d/df/Wikibooks-logo-en-noslogan.svg/40px-Wikibooks-logo-en-noslogan.svg.png)
- The Single UNIX Specification, Issue 7 from The Open Group – Commands & Utilities Reference,
- Linux User Commands Manual –
- Plan 9 Programmer's Manual, Volume 1 –