"man test"의 "[ EXPRESSION ], [ ] 및 [OPTION"은 무엇을 의미합니까?

"man test"의 "[ EXPRESSION ], [ ] 및 [OPTION"은 무엇을 의미합니까?

확인해보니 man test시놉시스에 와 의 가능성이 있는 것으로 확인됐습니다 test.test EXPRESSIONtest

다음은 무엇을 [ EXPRESSION ], [ ] and [OPTION의미하나요?

괄호는 왜 비어 있고, [OPTION괄호가 없는 이유는 무엇입니까? 누군가 나에게 이것을 설명해 줄 수 있습니까?

NAME
       test - check file types and compare values

SYNOPSIS
       test EXPRESSION
       test

       [ EXPRESSION ]
       [ ]
       [ OPTION

답변1

[다른 이름을 위한 test. 세 줄 모두 test몇 가지 옵션이 포함된 명령줄입니다.

첫 번째 줄은 표준 테스트입니다. [ 5 -gt 4 ]와 동일합니다 test 5 -gt 4.

두 번째에서는 표현식이 생략되었습니다. 이는 false가 종료됨을 의미합니다(0 arguments: Exit false (1)).

세 번째 경우에는 GNU coreutils를 사용하고 있는 것 같습니다. GNU의 test도움말 텍스트에는 다음 설명이 포함되어 있습니다.

NOTE: [ honors the --help and --version options, but test does not.
test treats each of those as it treats any other nonempty STRING.

이것은비 POSIX 확장test; 이러한 매개변수를 다른 매개변수와 마찬가지로 문자열로 처리하려는 의도인 것 같습니다 . [닫는 괄호의 존재로 옵션 케이스와 문자열 케이스를 구별하는 기능 ].

쉘이 자체적으로 를 제공할 수 있으므로 이 버전을 사용해야 [합니다 ./bin/\[

답변2

[test일부 쉘의 쉘 내장 명령과 동일합니다.

더 자세히 살펴보면 man test효과적으로 테스트할 수 있는 내용이 설명되어 있습니다.EXPRESSION

생략된 EXPRESSION의 기본값은 false입니다. 그렇지 않으면 EXPRESSION이 true 또는 false이고 종료 상태가 설정됩니다. 다음 중 하나입니다....

매뉴얼 페이지에서는 알 수 없지만 이전/일부 다른 쉘에서는 및 둘 다 실제 명령으로 [사용 가능합니다 test. 즉, 표시되는 공간은 다음과 같습니다 [ EXPRESSION ].필수적인EXPRESSION으로 받아들여지기 위해토론을 위한 [/ test. 따라서 이를 내장으로 제공하는 셸의 경우에도 호환성을 위해 이 형식을 유지합니다.

설명된 대로@dr01이 답변을 입력했을 때 닫는 대괄호는 선택 사항이었습니다.

답변3

[ OPTION실제로 괄호가 부족한 것은 아닙니다.

실제로 놀랍게도 와 동등한 [명령 (위치)이 있습니다 . 따라서 (적어도 이론상으로는) 왼쪽 괄호만 사용하는 것이 허용되고 오른쪽 괄호는 구문 설탕으로 사용됩니다. 하지만,/usr/bin/[test최신 쉘 버전에는 필요합니다..

관련 정보