shell if 예제

Compartir

2/08/2019

Por

Categoría: Sin categoría

Comentarios: 0

때로는 일련의 패턴과 일치하는 변수에 따라 다른 경로를 수행하려고 할 수 있습니다. 우리는 일련의 if 및 elif 문을 사용할 수 있지만 곧 무분면 커질 것입니다. 다행히 도서 문을 통해 상황을 더 깨끗하게 만들 수 있습니다. 설명하기가 조금 어렵기 때문에 여기에 설명할 몇 가지 예가 있습니다: 들여쓰기에 대한 이야기. 여기에 당신의 인생을 더 쉽게 때의 완벽한 예입니다. 스크립트 내부에 필요한 만큼 if 문이 있을 수 있습니다. 다른 if 문 안에 if 문이 있을 수도 있습니다. 예를 들어 명령줄에 주어진 숫자를 분석할 수 있습니다. 이것은 업데이트 된 샘플 셸 스크립트의 모양입니다 : [ OPTION은 [셸에 의해 실제로 실행되는 것은 이것입니다: 나는 본질적으로 명령의 종료 상태를 확인하는 경우 사실에 대해 더 말할 것이라고 말했다. 그래서 나는 것입니다.

조건에 관해서 bash의 기본 규칙은 0 true, >0 false 와 같습니다. 이는 0이 false이고 1(또는 그 이상)이 true인 많은 프로그래밍 언어와 거의 반대입니다. 그 이유는 bash와 같은 셸이 프로그램을 많이 다루기 때문입니다. UNIX 규칙에 따라 프로그램은 실행이 제대로 되었는지 또는 오류가 발생했는지 여부를 나타내는 종료 상태를 사용합니다. 성공적인 실행은 설명이 필요하지 않으므로 하나의 종료 상태만 있으면 됩니다. 그러나 문제가 있는 경우 무엇이 잘못되었는지 아는 것이 유용합니다. 따라서 0은 성공적인 실행에 사용되며 1-255는 어떤 종류의 오류가 발생했는지 를 나타냅니다. 숫자 1-255의 의미는 반환하는 프로그램에 따라 다릅니다.

어쨌든, 그 후 블록을 실행하면 명령이 0을 반환합니다. 예, 조건은 명령입니다. [$foo -ge 3]라는 문구는 종료 상태를 반환하고 다른 두 구문도 반환합니다! 따라서 조건을 빠르게 테스트하는 데 사용할 수있는 깔끔한 트릭이 있습니다 :이 예에서는 명령 ID -u의 출력이 문자열 «0»과 같으면 문자열 «superuser»를 인쇄합니다. 이 예제에서 «에코 true»는 «[$foo -ge 3]»이 0(true)을 반환하는 경우에만 실행됩니다. 왜, 당신은 요청할 수 있습니다. bash는 필요할 때만 조건을 평가하기 때문입니다. 및 결합 식을 사용할 때 결합 식을 true로 만들기 위해 두 조건 모두 true여야 합니다. 첫 번째 조건이 false를 반환하는 경우 두 번째 조건이 반환하는 것은 중요하지 않습니다.

결과는 거짓이 될 것입니다. 따라서 bash는 두 번째 조건을 평가하지 않으며 예제에서 «에코 true»가 실행되지 않는 이유입니다. 첫 번째 조건이 true인 경우 두 번째 조건이 평가되지 않는 경우 또는 연산자(«||»)에 대해 동일합니다. 글쎄, 다이빙을 위해 너무 많이. 더 많은 것을 알고 싶다면 고급 Bash-스크립팅 가이드와 Bash 참조 설명서 또는 Bash 스크립팅에 대한 시스템 관리자 가이드를 알려주고 싶습니다. || (또는) 운영자 또는 (및) 연산자. 이렇게 하면 if 문을 중첩하기 위해 추가 코드를 작성할 필요가 없습니다. 위의 코드에는 연령이 100보다 크거나 같는지 확인하는 중첩 if 문이 있습니다. 이것은 elif (다른 경우)를 사용하여 변경할 수도 있습니다. elif의 구조는 if의 구조와 동일합니다.

이 예제에서는 특정 연령 범위를 확인합니다. 20세 미만이거나 50세 미만인 경우 연령 범위를 벗어났습니다. 20~30세 인 경우 20대 이상입니다. 그러나 이 작업을 수행하지 않아야 합니다. 쉘 스크립트에서 부울을 나타내는 관용적이고 효율적인 방법은 값 1(true)과 0(false)입니다. 이 관용구는 당신이있는 경우 더 편리합니다 (((사용할 수 있습니다, 우리는 나중에 논의 할 것이다.