차이점이 뭐야:
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