조건부 동작이 비어 있는 경우

조건부 동작이 비어 있는 경우

차이점이 뭐야:

if echo " T " | grep -q " F "; then echo FOUND; else echo NOT; fi

그리고:

if ""; then echo FOUND; else echo NOT; fi

첫 번째 명령의 출력은 다음과 같습니다.

NOT

두 번째 명령의 출력은 다음과 같습니다.

: command not found 
NOT

나는 둘 다 같은 방식으로 행동해야한다고 생각합니다.

답변1

: command not found

이는 if 문에서 조건으로 제공된 명령을 찾을 수 없음을 의미합니다. 명령은 ""빈 문자열이므로 해당 명령을 찾을 수 없습니다.

Bash 매뉴얼 페이지에 따르면 if 문의 구문은 다음과 같아야 합니다.

if list; then list; [ elif list; then list; ] ... [ else list; ] fi

목록&, && 또는 || 연산자 중 하나로 구분되고 선택적으로;, & 또는 or 중 하나로 끝나는 하나 이상의 파이프 시퀀스입니다.

따라서 위의 if 문에서는 목록이 실행되고 종료 코드 127이 반환되며 명령을 찾을 수 없다는 오류가 발생합니다. 그런 다음 값은 false로 평가되므로 else 블록이 실행됩니다.


아마도 당신이 원하는 것은 다음과 같습니다:

if false; then echo FOUND; else echo NOT; fi

관련 정보