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