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

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

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

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

$ file /usr/bin/[  
/usr/bin/[: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared  libs), for GNU/Linux 2.6.15, stripped  

실행하려고 하면 라인 확장에 내장된 bash가 기본값으로 설정되어 있는 것 같습니다. 실제로 파일을 실행하는 대신.

$ "/usr/bin/["
/usr/bin/[: missing ‘]’
$ /usr/bin/\[
/usr/bin/[: missing ‘]’

답변1

이는 명령과 동일합니다 test. (참조 info test) 일반적으로 다음과 같은 조건식의 스크립트에서 이를 사용합니다.

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

조건문을 묶으려면 닫는 괄호가 필요합니다. (글쎄, 코드를 좀 더 보기 좋게 보기 위해 필요한 것 같습니다. 이에 대한 다른 실제적인 이유를 아는 사람이 있습니까?)

답변2

이는 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

관련 정보