"if 조건 then"을 사용하는 것과 "condition && {}"만 사용하는 것의 차이점은 무엇입니까?

"if 조건 then"을 사용하는 것과 "condition && {}"만 사용하는 것의 차이점은 무엇입니까?

다음 bash를 작성하는 데 실질적인 차이가 있는지 궁금합니다.

if [ <some condition> ]; then
  <some statement>
fi

그리고 다음:

[ <some condition> ] && {
  <some statement>
}

수행 방식에 차이가 있습니까, 아니면 동일합니까?

답변1

이 시점에서는 논리적, 언어적 차이가 별로 없습니다. 그러나 더 큰 것으로 확장하려는 경우 장황한 구문은 ifs 및 를 추가할 수 있는 더 많은 공간을 제공합니다. 논리 연산자를 고집한다면 읽기가 훨씬 더 어려울 것입니다. 직접 시도해 보세요.elifelse

예를 들어 &&및/또는 을 사용하여 다음을 다시 작성합니다 ||.

if [ 1 -eq 2 ]; then echo ok; elif [ 1 -eq 1 ]; then echo lif; else echo el; fi

답변2

기본적으로 그들은 동일합니다. 두 경우 모두 조건이 true인 경우에만 명령문이 실행됩니다.

이는 문체의 차이이므로 첫 번째 옵션을 선호합니다.

답변3

모든 쉘이 다음을 지원하는 것은 아닙니다.

[ <some condition> ] && {
  <some statement>
}

일부 쉘은 /usr/bin/[에 있는 실행 파일을 통해 이를 지원합니다.

쉘이 /usr/bin/[을 사용하고 있는지 테스트하려면 다음을 수행하십시오.

$ builtin [
sh: 1: builtin: not found

이는 쉘이 /usr/bin/[을 사용하고 있음을 의미하지만, 다른 것을 얻으면 쉘이 이를 지원합니다...

그러나 bash는 지원됩니다.

관련 정보