source

Bash if 스테이트먼트에서 대괄호는 언제 필요합니까?

manysource 2023. 4. 15. 09:04

Bash if 스테이트먼트에서 대괄호는 언제 필요합니까?

보통 if 문에서는 대괄호를 사용합니다.

if [ "$name" = 'Bob' ]; then ...

근데 제가 확인해보니까grepsuccessed 대괄호는 사용하지 않습니다.

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사실 허락하지 않습니다(좀 더 정확히 말하면,test취급하지 않다]인수(예: 유효한 파일 이름)를 지정합니다.(그렇게 실장할 필요는 없었지만,[비길 데 없는]많은 사람들을 매우 긴장시켰을 것이다.)

가장 좋은 방법은[ ... ]구문, 고려사항[프로그램이 될 수 있을 것 같아요.-맞아!

이것 좀 봐.

~ $ ls /usr/bin/\[ 
/usr/bin/[

다른 한편으로, 당신은 아마 그 버전의 그것을 사용하지 않을 것이다.bash또,[쉘 빌트인으로서.

어쨌든, 당신의 질문에 대답하려면:뭐?ifdoes는 사용자가 지정한 명령어를 실행하여 반환값이 다음과 같이 표시됩니다.0그렇지 않으면.사용하다[문자열 비교와 같은 더 흥미로운 비교를 수행할 수 있습니다.man [그리고.man bash.

언급URL : https://stackoverflow.com/questions/8934012/when-are-square-brackets-required-in-a-bash-if-statement