Bash if 문에서 대괄호는 언제 필요합니까?
일반적으로 if 문에 대괄호를 사용합니다.
if [ "$name" = 'Bob' ]; then ...
그러나 grep
성공 했는지 확인할 때 대괄호를 사용하지 않습니다.
if grep -q "$text" $file ; then ...
if
문장 에서 대괄호는 언제 필요 합니까?
대괄호는 test
명령 의 동의어입니다 . if
문은 걸릴 분기를 결정하기 위해 명령의 종료 상태를 확인합니다. grep -q "$text"
명령이지만 "$name" = 'Bob'
그렇지 않습니다. 단지 표현 일뿐입니다. test
표현식을 받아서 평가하는 명령입니다.
if test "$name" = 'Bob'; then ...
대괄호는 test
명령 의 동의어이므로 원래 명령문으로 다시 작성할 수 있습니다.
if [ "$name" = 'Bob' ]; then ...
[
실제로는 명령과 동등한 (거의 아래 참조) test
명령입니다. 셸 구문의 일부가 아닙니다. ( 셸에 따라 [
및 test
은 모두 내장 된 명령이기도하지만 성능을 제외하고는 동작에 영향을주지 않습니다.)
if
문은 명령을 실행하고 실행 then
명령이 성공하면 일부, 또는 else
일부 (있는 경우)가 실패 할 경우. (명령이 상태 ( $?
) 0으로 종료하면 성공하고 0이 아닌 상태로 종료하면 실패합니다.)
에
if [ "$name" = 'Bob' ]; then ...
명령은
[ "$name" = 'Bob' ]
(없이 동일한 명령을 직접 실행할 수 있습니다 if
.)
에
if grep -q "$text" $file ; then ...
명령은
grep -q "$text" $file
man [
또는 man test
더 많은 정보를 원하시면.
각주 : 음, [
명령은 명령과 거의 동일합니다 test
. 차이점은 마지막 주장으로 [
필요 ]
하지만 test
실제로 허용하지 않는다는 것입니다. (그것은하지 않은 그런 식으로 구현할 있지만, [
일치하지 않고는 ]
매우 매우 신경 많은 사람들이 만들었을 것입니다.)
[ ... ]
구문 을 생각하는 가장 좋은 방법은 프로그램이라고 생각 [
하는 것입니다.
이것 좀 봐:
~ $ ls /usr/bin/\[
/usr/bin/[
반면 에 쉘 내장으로 bash
제공 되기 때문에 해당 버전을 사용하지 않을 것 [
입니다.
어쨌든, 귀하의 질문에 대답하려면 : if
당신이 제공하는 명령을 실행하고 반환 값이 있는지 확인하십시오 0
. [
문자열 비교와 같이 더 흥미로운 다른 비교를 수행 하는 데 사용 합니다. man [
및을 참조하십시오 man bash
.
참고 URL : https://stackoverflow.com/questions/8934012/when-are-square-brackets-required-in-a-bash-if-statement
'Development Tip' 카테고리의 다른 글
.NET의 Windows 서비스에서 현재 로그인 된 사용자 이름을 얻으려면 어떻게합니까? (0) | 2020.12.10 |
---|---|
다른 열에서 계산 된 열? (0) | 2020.12.10 |
NameError : 'reload'이름이 정의되지 않았습니다. (0) | 2020.12.10 |
Grunt를 사용하는 노드 앱을 Heroku에 배포하는 방법 (0) | 2020.12.10 |
CSS 전역 변수 만들기 : 스타일 시트 테마 관리 (0) | 2020.12.10 |