나는 항상 폴더 /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