나는 항상 폴더 /bin에 [프로그램 이 있다는 것에 놀랐습니다 .
이것이 우리가 다음과 같은 일을 할 때 호출되는 것 if [ something ]입니까?
[쉘에서 프로그램을 명시 적으로 호출하면 해당을 요청 ]하고 닫는 괄호를 제공하면 괄호 사이에 삽입 한 내용에 관계없이 아무것도하지 않는 것 같습니다.
말할 필요도없이, 즉도 작동하지 않는 프로그램에 대한 도움말보기에 대한 일반적인 방법으로 man [도 [ --help작동합니다.
man '['나를 위해 잘 작동합니다- [당신이 인용하는 것을 잊었 거나 "works"의 다른 정의를 가지고 있습니다.
[인수를 평가하므로 모든 인수 사이에 공백이 있어야합니다. [ a=b ]비교가 아닙니다 : 항상 참입니다 (단일 문자열 : "a = b", 항상 참으로 평가됩니다 ). 그리고 인수는 4 개로 제한해야합니다 (최근의 구현에서는 더 많은 것을 허용하지만). 예를 들면 : [ "a" = "b" ]"a" "=" "b"와 불필요한 테스트 종료 인수 : "]")가 이미 4 개로 제한되어 있습니다. 더 필요한 경우 : 예를 들어 다음과 같은 체인 테스트 :if [ "$Var_a" = "foo" ] && [ "$Var_b" = "bar" ] ; then : do something ; fi
!자체는 (이스케이프되지 않고 인용되지 않은) 대체되지 않으며 훨씬 좋습니다 if ! [ .... 사용하는 모든 배쉬 확장 !은 적어도 다른 캐릭터를 포함합니다
[내장 된 bash(및 아마도 다른 쉘도) 있으며, 대신에 사용될 수 있습니다 /bin/[. 또한 test많은 시스템 에는 -link 가 있으며 , /bin/[그 반대의 경우도 마찬가지입니다. 그러나 다른 시스템에는 별도의 명령이 있습니다.
[는test하지 말고 명령을 나타내expr므로 다음과 같아야합니다.man test