다음 bash를 작성하는 데 실질적인 차이가 있는지 궁금합니다.
if [ <some condition> ]; then
<some statement>
fi
그리고 다음:
[ <some condition> ] && {
<some statement>
}
수행 방식에 차이가 있습니까, 아니면 동일합니까?
답변1
이 시점에서는 논리적, 언어적 차이가 별로 없습니다. 그러나 더 큰 것으로 확장하려는 경우 장황한 구문은 if
s 및 를 추가할 수 있는 더 많은 공간을 제공합니다. 논리 연산자를 고집한다면 읽기가 훨씬 더 어려울 것입니다. 직접 시도해 보세요.elif
else
예를 들어 &&
및/또는 을 사용하여 다음을 다시 작성합니다 ||
.
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는 지원됩니다.