/ usr / bin / [은 무엇이며 어떻게 사용합니까?


26

나는 coreutils를보고 있었고 이것을 coreutils의 일부로 포함 된 파일 중 하나로 발견했습니다 /usr/bin/[. 무엇 [이며 무엇을합니까?

실행 파일입니다. 나는 그것이 무엇을하는지 또는 어떻게 사용하는지 모른다.

$ file / usr / bin / [
/ usr / bin / [: GNU / Linux 2.6.15 용 ELF 32 비트 LSB 실행 파일, Intel 80386, 버전 1 (SYSV), 동적 링크 (공유 라이브러리 사용), 제거

내가 그것을 실행하려고 할 때, 그것이 기본적으로 확장 된 내장 bash로 생각합니다. 실제로 파일을 실행하는 대신

$ "/ usr / bin / ["
/ usr / bin / [: 누락 ] ']' $ /usr/bin/\[
/usr/bin/[: missing



2
man [OS X에서 작동합니다.
Daniel Beck

답변:


33

이것은 command와 동일합니다 test. (참조 info test.) 일반적으로이 같은 조건식의 스크립트에서 사용 :

if [ -n "$1" ]; then
    echo $1
fi

조건을 묶으려면 닫는 괄호가 필요합니다. (코드에서 더 멋지게 보이기 위해 필요한 것 같습니다. 다른 실용적인 이유를 아는 사람이 있습니까?)


3
그 주 [입니다 모두 쉘 내장과 동일 (또는 유사) 사용과 외부 프로그램. bash에서 실행할 때 [또는 test내장 함수를 호출 할 때 .
grawity

선택적인 경우 특정 상황에서 구문이 모호하기 때문에 필요합니다.
Random832

20

test명령 과 동일합니다 .

대신에

if /usr/bin/test -z "$VAR"
then
    echo VAR not set
fi

당신이 사용할 수있는:

if /usr/bin/[ -z "$VAR" ]
then
    echo VAR not set
fi

루프에서도 사용할 수 있습니다.

i=0
while [ $i -lt 10 ]
do
   echo $i
   ((i++))
done

다음과 같이 하나의 라이너로 사용할 수도 있습니다.

[ -z "$VAR" ] && echo VAR not set && exit

[ -f foo.txt ] && cat foo.txt

2
그것을 사용하는 좋은 예. "if / usr / bin / ["
nelaaro
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.