![Bash 조건문](https://linux55.com/image/621/Bash%20%EC%A1%B0%EA%B1%B4%EB%AC%B8.png)
Bash 스크립트에 사용되는 조건문의 세 가지 형식은 무엇입니까?
답변1
이것Bash 매뉴얼의 관련 부분조건부 평가에 사용할 수 있는 5가지 구성이 나열되어 있습니다. 이 중에서 if
, case
및 [[ .. ]]
생성자는 아마도 실제 코드에서 가장 일반적으로 사용되지만 이 (( .. ))
구문은 복잡한 계산이나 기타 수치 연산을 수행하는 스크립트에서 자주 사용됩니다.
그러나 bash에서 분기하는 또 다른 매우 일반적인 형식은 언급하지 않습니다. 즉, 단락 평가와 함께 명령을 실행하는 것입니다.
grep -q needle haystack.txt && echo "Needle located!" || echo "No dice or needles.";
&&
및 ||
논리 연산자는 각각 "and"와 "or"입니다.
이는 실제로 다음과 같습니다.
if grep -q needle haystack.txt; then echo "yea"; else echo "nay"; fi;
그러나 다르게 작동합니다. 첫 번째 형식에서 조건부 논리는 실제로 코드의 실제 명시적 대상의 부작용이며, 적어도 표면적으로는 논리 연산자를 평가합니다. 이 구성은 C 및 JavaScript 코드에서도 일반적입니다.
이는 단축키를 사용하여 작동합니다. 예를 들어 표현식의 일부는 x && y || z
왼쪽에서 오른쪽으로 평가됩니다. 논리 and (예: x
in ) 의 왼쪽이 x && y
false로 평가되면 이 시점에서 이미 false임을 알고 있으므로 bash
해당 부분을 평가할 필요가 없습니다 .y
x && y
논리적 OR의 경우 그 반대도 참입니다. true || z
즉, z 결과가 무엇이든 항상 참으로 평가됩니다.
따라서 grep
결과가 false인 경우 표현식의 해당 부분은 true일 수 없으므로 bash
먼저 건너뛸 수 있습니다 . echo
그래서 두 번째 로 넘어 갑니다 echo
. 반면에 grep이 true이면 echo
첫 번째 항목이 실행됩니다(단어가 에코됩니다...). 이는 오른쪽 값에 관계없이 표현식이 여전히 true로 평가되기 bash
때문에 수행됩니다 .||
Bash가 조건문을 사용하는 방법을 이해하려면 명령줄에서 몇 가지 실험을 수행하는 것이 가장 좋습니다. 주문하다
echo $?;
에코됩니다반환 코드이전 진술. 이는 오류 코드이므로 0
true를 나타내고, 0이 아닌 값은 false를 나타냅니다. 처음에는 약간 혼란스럽지만 익숙해집니다.
그래서 당신은 다음과 같은 것을 할 수 있습니다
$ (( 1 + 2 == 3 )); echo $?
0
$ (( 1 + 2 == 4 )); echo $?
1
[[ .. ]]
그리고 이러한 기본 구성 요소를 이해하기 위해 구성에 대해 유사한 테스트를 수행합니다 . 완료되면 if
프레젠테이션 으로 이동하세요 case
.
귀하의 질문에 대한 답변은 귀하가 질문하는 상황에 따라 많이 달라질 수 있다고 생각합니다. 그러나 옵션을 잘 이해하면 그들이 원하는 것이 무엇인지 파악하는 데 도움이 될 것입니다.