if
then
fi
구조. 추가하다 elif
추가 조건식에 대한 키워드 또는 else
이전 조건절이 실행되지 않은 경우 실행되는 코드의 범용 섹션을 정의하는 키워드입니다.사소하지 않은 모든 Bash 스크립트는 결정을 내려야 합니다. Bash if 문을 사용하면 Linux 스크립트에서 질문을 하고 대답에 따라 다른 코드 섹션을 실행할 수 있습니다. 작동 방식은 다음과 같습니다.
조건부 실행이란 무엇입니까?
가장 사소한 Bash 스크립트를 제외하고는 일반적으로 결정의 결과에 따라 실행 흐름이 스크립트를 통해 다른 경로를 거쳐야 합니다. 이를 조건부 실행이라고 합니다.
수행할 실행 분기를 결정하는 한 가지 방법은 if
성명. 당신은들을 수 있습니다 if
호출된 문 if then
진술, 또는 if then else
진술. 그것들은 같은 것에 대한 다른 이름입니다.
그만큼 if
진술은 무언가가 사실이라면 다음을 수행한다고 말합니다. 이것. 그러나 무언가가 거짓이라면, 저것 대신에. “어떤 것”은 변수의 값, 파일의 존재 또는 두 문자열이 일치하는지 여부와 같은 많은 것들이 될 수 있습니다.
의미 있는 스크립트에는 조건부 실행이 필수적입니다. 이것이 없으면 스크립트에서 수행할 수 있는 작업이 매우 제한됩니다. 의미 있는 결정을 내릴 수 없다면 실제 문제를 해결하고 실행 가능한 솔루션을 생성할 수 없습니다.
그만큼 if
statement는 아마도 조건부 실행을 얻기 위해 가장 자주 사용되는 수단일 것입니다. Bash 스크립팅에서 사용하는 방법은 다음과 같습니다.
관련된: Linux Bash 스크립트에 파일이 있는지 확인하는 방법
간단한 If 문 예제
이것은 가장 단순한 표준 형식입니다. if
성명:
if [ this-condition-is-true ] then execute-these-statements fi
텍스트 내의 조건이 참으로 확인되면 then
절이 실행됩니다. 다른 사람이 작성한 스크립트를 살펴보면 if
다음과 같이 작성된 진술:
if [ this-condition-is-true ]; then execute-these-statements fi
몇 가지 참고 사항:
- 그만큼
if
진술은 서면으로 마무리fi
. - 공간이 있어야 합니다. ~ 후에 첫 번째 괄호”
[
” and before the second bracket ”]
” 조건부 테스트. - 넣을 예정이라면
then
조건부 테스트와 같은 줄에 있는 키워드는 세미콜론을 사용해야 합니다.”;
“시험 후.
옵션을 추가할 수 있습니다. else
조건 테스트가 거짓으로 판명되면 일부 코드가 실행되도록 하는 절입니다. 그만큼 else
절은 필요하지 않습니다 then
예어.
if [ this-condition-is-true ] then execute-these-statements else execute-these-statements-instead fi
이 스크립트는 다음의 간단한 예를 보여줍니다. if
를 사용하는 문 else
절. 조건 테스트는 고객의 나이가 21세 이상인지 확인합니다. 나이가 21세 이상인 경우 고객은 구내에 입장할 수 있으며 then
절이 실행됩니다. 그들이 나이가 많지 않다면, else
절이 실행되고 허용되지 않습니다.
#!/bin/bash customer_age=25 if [ $customer_age -ge 21 ] then echo "Come on in." else echo "You can't come in." fi
위의 스크립트를 편집기에 복사하고 “if-age.sh”라는 파일로 저장한 다음 chmod
실행할 수 있도록 하는 명령입니다. 우리가 논의하는 각 스크립트에 대해 그렇게 해야 합니다.
chmod +x if-age.sh
스크립트를 실행해 봅시다.
./if-age.sh
이제 파일을 편집하고 21세 미만의 연령을 사용합니다.
customer_age=18
스크립트를 변경하고 변경 사항을 저장합니다. 지금 실행하면 조건이 false를 반환하고 else 절이 실행됩니다.
./if-age.sh
elif 절
그만큼 elif
절은 추가 조건 테스트를 추가합니다. 당신은 많은 것을 가질 수 있습니다 elif
당신이 원하는대로 조항. 그 중 하나가 사실로 밝혀질 때까지 차례로 평가됩니다. 다음 중 어느 것도 elif
조건부 테스트가 참으로 판명되면 else
절이 있으면 실행됩니다.
이 스크립트는 숫자를 묻고 홀수인지 짝수인지 알려줍니다. 0은 짝수이므로 아무것도 테스트할 필요가 없습니다.
다른 모든 숫자는 2로 나눈 모듈로를 찾아 테스트합니다. 우리의 경우 모듈로는 2로 나눈 결과의 분수 부분입니다. 소수 부분이 없으면 숫자는 정확히 2로 나누어집니다. 따라서 짝수입니다.
#!/bin/bash echo -n "Enter a number: " read number if [ $number -eq 0 ] then echo "You entered zero. Zero is an even number." elif [ $(($number % 2)) -eq 0 ] then echo "You entered $number. It is an even number." else echo "You entered $number. It is an odd number." fi
이 스크립트를 실행하려면 편집기에 복사하고 “if-even.sh”로 저장한 다음 chmod를 사용하여 실행 가능하게 만드십시오.
스크립트를 몇 번 실행하고 출력을 확인해 봅시다.
./if-even.sh
모두 잘 작동합니다.
다양한 형태의 조건부 테스트
괄호” []
” 우리는 조건부 테스트에 사용했습니다. test
프로그램. 그렇기 때문에 모든 비교와 테스트는 test
지원을 사용할 수 있습니다 if
성명.
다음은 그 중 일부에 불과합니다.
- ! 표현: 표현식이 거짓이면 참입니다.
- -n 문자열: 문자열의 길이가 0보다 크면 참입니다.
- -z 문자열: 문자열의 길이가 0이면 True입니다. 즉, 빈 문자열입니다.
- 문자열1 = 문자열2: string1이 string2와 같으면 참입니다.
- 문자열1 != 문자열2: string1이 string2와 같지 않으면 참입니다.
- 정수1 -eq 정수2: 정수1이 숫자로 정수2와 같으면 참
- 정수1 -qt 정수2: 정수1이 수치적으로 정수2보다 크면 참
- 정수1 -lt 정수2: 정수1이 수치적으로 정수2보다 작으면 참
- -d 디렉토리: 디렉토리가 존재하는 경우 True입니다.
- -e 파일: 파일이 존재하면 참.
- -s 파일: 크기가 0보다 큰 파일이 존재하는 경우 True입니다.
- -r 파일: 파일이 존재하고 읽기 권한이 설정되어 있으면 True입니다.
- -w 파일: 파일이 존재하고 쓰기 권한이 설정되어 있으면 True입니다.
- -x 파일: 파일이 존재하고 실행 권한이 설정되어 있으면 True입니다.
테이블에서 “파일” 및 “디렉토리”는 상대 또는 절대 디렉토리 경로를 포함할 수 있습니다.
등호 “=
“와 평등 테스트 -eq
~이다 ~ 아니다 똑같다. 등호는 다음을 수행합니다. 문자로 문자 텍스트 비교. 평등 테스트는 다음을 수행합니다. 숫자 비교.
우리는 이것을 사용하여 이것을 볼 수 있습니다 test
명령줄에서 프로그램.
test "this string" = "this string"
test "this string" = "that string"
test 1 = 001
test 1 -eq 001
각각의 경우에 우리는 echo
마지막 명령의 반환 코드를 인쇄하는 명령입니다. 0은 참을 의미하고 1은 거짓을 의미합니다.
등호 사용” =
”는 1과 001을 비교하는 잘못된 응답을 제공합니다. 두 문자열이 서로 다른 두 문자열이기 때문에 맞습니다. 숫자로 그것들은 같은 값(1)이므로 -eq
연산자는 참 응답을 반환합니다.
조건부 테스트에서 와일드카드 일치를 사용하려면 이중 대괄호 ”를 사용하십시오. [[ ]]
” 구문.
#!/bin/bash if [[ $USER == *ve ]] then echo "Hello $USER" else echo "$USER does not end in 've'" fi
이 스크립트는 현재 사용자의 계정 이름을 확인합니다. “로 끝나는 경우ve
“, 사용자 이름을 출력합니다. ”로 끝나지 않으면 ve
“라고 말하고 스크립트는 끝납니다.
./if-wild.sh
관련된: Bash의 조건부 테스트: if, then, else, elif
중첩된 If 문
당신은 넣을 수 있습니다 if
다른 내부의 진술 if
성명.
이것은 완벽하게 허용되지만 중첩 if
명령문은 읽기 쉽지 않고 유지 관리하기 어려운 코드를 만듭니다. 2~3단계 이상의 중첩을 발견한 경우 if
스크립트의 논리를 재구성해야 할 수도 있습니다.
다음은 1에서 7까지의 숫자로 날짜를 가져오는 스크립트입니다. 하나는 월요일이고 일곱은 일요일입니다.
가게의 영업시간을 알려줍니다. 평일이나 토요일이면 가게가 열려 있다고 알려줍니다. 일요일이면 가게가 문을 닫는다고 보고한다.
가게가 열려 있으면 중첩 if
문은 두 번째 테스트를 만듭니다. 요일이 수요일이면 아침에만 영업한다고 알려줍니다.
#!/bin/bash # get the day as a number 1..7 day=$(date +"%u") if [ $day -le 6 ] then ## the shop is open if [ $day -eq 3 ] then # Wednesday is half-day echo "On Wednesdays we open in the morning only." else # regular week days and Saturday echo "We're open all day." fi else # not open on Sundays echo "It's Sunday, we're closed." fi
이 스크립트를 편집기에 복사하고 “if-shop.sh”라는 파일로 저장한 다음 다음을 사용하여 실행 가능하게 만듭니다. chmod
명령.
스크립트를 한 번 실행한 다음 컴퓨터의 시계를 수요일로 변경하고 스크립트를 다시 실행했습니다. 그런 다음 요일을 일요일로 변경하고 다시 한 번 실행했습니다.
./if-shop.sh
./if-shop.sh
./if-shop.sh
관련된: Linux에서 Double Bracket 조건부 테스트를 사용하는 방법
경우의 경우
조건부 실행은 프로그래밍과 스크립팅에 힘을 실어주는 것입니다. if
문은 코드 내에서 실행 경로를 전환하는 가장 일반적으로 사용되는 방법일 수 있습니다. 그러나 그것이 항상 답이라는 것을 의미하지는 않습니다.
좋은 코드를 작성한다는 것은 어떤 옵션이 있고 특정 요구 사항을 해결하기 위해 어떤 옵션을 사용하는 것이 가장 좋은지 아는 것을 의미합니다. 그만큼 if
진술은 훌륭하지만 가방에 있는 유일한 도구로 두지 마십시오. 특히 다음을 확인하십시오. case
일부 시나리오에서 해결책이 될 수 있는 진술.
관련된: Bash 스크립트에서 Case 문을 사용하는 방법