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
'source' 카테고리의 다른 글
| Git에서 자격 증명 제거 (0) | 2023.04.20 |
|---|---|
| "라인 피드"와 "캐리지 리턴"의 차이점은 무엇입니까? (0) | 2023.04.20 |
| 하위 쿼리의 주문 기준 SQL 오류 (0) | 2023.04.15 |
| WPF 페이지에서 네비게이션바를 숨기는 방법 (0) | 2023.04.15 |
| Bash를 사용하여 변수에 현재 디렉토리를 저장하시겠습니까? (0) | 2023.04.15 |