Bash if 스테이트먼트에서 대괄호는 언제 필요합니까?
보통 if 문에서는 대괄호를 사용합니다.
if [ "$name" = 'Bob' ]; then ...
근데 제가 확인해보니까grep
successed 대괄호는 사용하지 않습니다.
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
또,[
쉘 빌트인으로서.
어쨌든, 당신의 질문에 대답하려면:뭐?if
does는 사용자가 지정한 명령어를 실행하여 반환값이 다음과 같이 표시됩니다.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 |