[Linux] 리눅스(CentOS7)

[Linux] 리눅스 셸 스크립트 프로그래밍_2

ITsubin 2022. 4. 10. 15:39

[ if문과 case문 ]

(1) 기본 if문

if [조건]
then
    참일 경우 실행
fi
exit 0

 - [ 조건 ] 사이의 각 단어에는 모두 공백이 있어야 한다.

 

(2) if ~ else문

- 참인 경우와 거짓인 경우를 구분해서 실행한다.

if [조건]
then
    참일 경우 실행
else
    거짓일 경우 실행
fi
exit 0

 

< if 조건문에 들어가는 비교 연산자 >

(1) 문자열 비교 연산자

   1) “문자열1” = “문자열2” --> 두 문자열이 같으면 참

   2)문자열2” != “문자열2” --> 두 문자열이 같지 않으면 참

   3) -n “문자열” --> 문자열이 NULL이 아니면 참

   4) -z “문자열” --> 문자열이 NULL이면 참

 

(2) 산술 비교 연산자

   1) 수식1 –eq 수식2 --> 두 수식이 같으면 참 (=)

   2) 수식1 –ne 수식2 --> 두 수식이 다르면 참 (!=)

   3) 수식1 –gt 수식2 --> 수식1 이 크면 참 (>)

   4) 수식1 –ge 수식2 --> 수식1 이 크거나 같으면 참 (>=)

   5) 수식1 –lt 수식2 --> 수식1 이 작으면 참 (<)

   6) 수식1 –le 수식2 --> 수식1 이 작거나 같으면 참 (<=)

 

< 파일과 관련된 조건 >

   1) -e [파일이름] : 파일이 존재하면 참

   2) -u [파일이름] : 파일에 SetUID가 설정되면 참

   3) -g [파일이름] : 파일에 SetGID가 설정되면 참

   4) -f [파일이름] : 파일이 일반 파일이면 참 (-로 시작..)

   5) -r [파일이름] : 파일이 읽기 가능이면 참

   6) -w [파일이름] : 파일이 쓰기 가능이면 참

   7) -x [파일이름] : 파일이 실행 가능이면 참

 


[ case ~ esac문 ]

 - 여러가지 다중 분기가 존재할 경우 사용하는 case문
 - 형식 : case [변수] in [분기점] esac

 

아래 예시는 case ~ esac문을 사용한 예시입니다.

1 #!/bin/sh
2 echo "리눅스가 재미있나요? (yes / no)"
3 read answer
4 case $answer in
5 yes | Yes | YES | y | Y)
6 echo "다행입니다";;
7
8 [nN]*)
9 echo "안타깝습니다";;
10 *)
11 echo "입력이 올바르지 않습니다."
12 esac
13 exit 0

5행, 8행, 10행처럼 괄호로 끝난 행은 모두 "분기"입니다.

5행에서는 yes, Yes, YES, y, Y 총 5개의 값을 입력했을 경우 6행을 실행하게 되고,
8행에서는 n이나 N으로 시작하는 모든 값( * )일 경우 9행을 실행하게 됩니다.
12행의 esac은 case ~ easc문을 끝내는 것입니다.

 


[ For ~ in 반복문 ]

for [변수] in 값1 값2 값3 ........ 값10

do

[반복할 문장]

done

 

- 변수에 각각의 값을 넣은 후 do 안에 있는 [반복할 문장]을 값의 개수만큼 실행한다.

 

[root@localhost ~]# cat forin1.sh

#!/bin/sh

hap=0 --> 합계를 누적할 변수를 0으로 초기화

for((i=1;i<=100;i++)) --> i를 1번 부터 100번까지 대입

do

hap=`expr $hap + $i` --> hap 변수에 i 변수의 값을 누적한다(1부터 100까지 계속 더한다)

done

echo "1부터 100까지의 합: "$hap

exit 0

 


[ While 문 ]

- 무한 루프가 가능하다.

- while 문은 조건식이 참인 동안 계속 반복하는 특성을 갖는다.

 

While 예시 1.

[root@localhost ~]# vi while1.sh
1 #!/bin/sh
2 while [ "A" != "B" ] --> 참인 조건식
3 do
4 echo "I hate Shell Script!!" --> 무한 반복
5 done
6 exit 0

 

While 예시 2.

[root@localhost ~]# vi while2.sh
1 #!/bin/sh
2 hap=0 --> 누적할 hap 변수를 초기화한다.
3 i=1
4 while [ $i -le 10 ] --> i 10보다 작거나 같으면 6~7행을 실행
5 do
6 hap=`expr $hap + $i` --> hap i의 값을 누적해 저장.
7 i=`expr $i + 1` --> i 변수의 값을 1씩 증가시킨다.
8 done
9 echo "1부터 10까지의 합:" $hap
10 exit 0