![후행 콜론 및 대시에 대한 내장 테스트 명령](https://linux55.com/image/6020/%ED%9B%84%ED%96%89%20%EC%BD%9C%EB%A1%A0%20%EB%B0%8F%20%EB%8C%80%EC%8B%9C%EC%97%90%20%EB%8C%80%ED%95%9C%20%EB%82%B4%EC%9E%A5%20%ED%85%8C%EC%8A%A4%ED%8A%B8%20%EB%AA%85%EB%A0%B9.png)
test
대시 내장(또는) 명령의 후행 콜론의 의미는 무엇입니까 [
? if [ ... ]: ; then .. ; fi
에서는 (완전히) 작동 하지만 에서는 작동하지 않는다는 사실을 알고 dash
놀랐습니다 . bash
이는 내장 함수가 명령과 다르게 동작하기 때문인 것 같습니다.
$ /usr/bin/\[ 1 ] && echo 1
1
$ /usr/bin/\[ 1 ]: && echo 1
/usr/bin/[: missing `]'
$ [ 1 ]: && echo 1
1
답변1
명령을 구문 분석하면 이는 더 큰 문제인 것 같습니다. bash
닫는 괄호가 마지막 인수가 될 것으로 예상하고 정확히 "]" 문자열이 아닌 경우 불평합니다.
bash$ [ 1 ]
bash$ [ 1 ] hi
bash: [: missing `]'
bash$ [ 1 ]hi
bash: [: missing `]'
bash$ dash
$ [ 1 ]
$ [ 1 ] hi
dash: 2: [: missing ]
$ [ 1 hi]
dash: 3: [: missing ]
$ [ 1 ]:
$ [ 1 ]hi
$
쉘은 dash
첫 번째 문자가 "]"인지 확인하고 나머지는 무시합니다. "]"가 마지막 인수의 첫 번째 문자에 없으면 다음 bash
과 유사한 오류가 반환됩니다.