물먹는산세베리아

[Linux]5_1. lab 본문

Linux

[Linux]5_1. lab

suntall 2020. 6. 9. 19:26

1. case 문

case_ex.sh

- score을 2로 선언해 주었고 따라서 B가 출력되었다.

- 0 or 1 (0|1)일 경우 A 출력, 2일 경우 B 출력, 3일 경우 C를 출력하고

- 그 이외(*)에는 out of range를 출력하도록 하였다.

- case문은 case로 시작하고 esac로 끝내야 한다.

- 조건문에서는 )를 사용한다.

- 실행문 끝에는 ;;를 붙인다.

 

실습)

case.sh

사용자에게 숫자를 입력 받고 그 숫자가 3, 6 9 중 하나일 때 Hello+숫자를 출력하는 스크립트이다.

그 외에는 Bye를 출력한다.

실행결과에서 input number에 3을 넣었을 때는 Hello 3을 출력하고 조건 이외의 숫자인 2를 넣었을 때는 2를 출력하는 것을 볼 수 있다.

* 입력과 출력을 한줄에 -> -p 사용

 

 

2. for문

방법 1)

for_ex.sh

- 반복문은 do로 시작하고 done으로 끝난다.

- do 다음에 실행문을 작성한다.

* echo 안에서 $사용하면 처음에 1 2 3 4 5라고 쓴 게 차례대로 돌면서 출력된다.

 

방법 2)

for_ex2.sh

- c 언어와 같은 방법도 가능하다. * 소괄호 2번 (( ))

* echo에 " "를 쓰든 안 쓰든 똑같다.

 

방법 3)

for_ex3.sh

- for_ex3.sh의 list라는 이름은 사용자 마음대로 설정해도 된다.

- $*은 목록을 가져오는 것이다.

 

실습)

for.sh

- 목록을 가져오는 방식을 사용했다.

- for문을 돌리면 한번 돌릴 때마다 자동적으로 줄바꿈된다.

 

3. while 문

while_ex.sh

- -le : 작거나 같은 동안에 -> num이 10보다 작거나 같은 동안에

- let == (( )) 괄호 2개는 연산에 쓰인다. 즉 let sum+=num과 ((sum+=num))은 같은 의미이다.

* while 띄어쓰기 주의

 

실습)

while.sh

- le는 같거나 작을 때까지를 의미한다.

- (()) 연산자이기 때문에 쌍 괄호를 썼다.

 

실행결과 줄이 바뀔 때마다 별이 하나씩 늘어남을 알 수 있었다.

즉, y가 x 와 값이 같을 때까지 별을 출력하고 이를 넘어서면 다음 줄로 넘어감을 보여준다.

 (echo를 썼기 때문이다.)

* echo 빼면 다음과 같이 출력된다.

4. select 문

select_ex.sh
-

- 메뉴를 생성할 수 있는 반복 실행문이다.

- PS3는 프롬프트 변경을 위한 쉘 변수이다. (반복문을 종료하지 않으면 계속 등장한다.)

- 사용자가 입력한 번호는 work에 저장된다. (사용자가 2를 선택하면 work에 2가 저장된다)

- PS3이 출력되려면 REPLY의 값이 null이어야 한다. 반복하려면 반복할 때마다 값이 NULL이면 된다.

*반복문 강제 종료: Ctrl+C

 

실습)

select.sh

 

- Enter Number가 반복되도록 PS3에 넣어주었다.

- list 에는 계절을 집어넣었고 ${list[*]}로 목록을 가져온다.

- season에 들어가는 계절(sping, summer fall, winter)에 따라 다른 문구가 출력된다.

- REPLY 역시 NULL을 대입

하였고 계속 반복되다가 Ctrl+C를 누르니 반복문이 멈추었다.

 

5. 함수

func_ex.sh

- study 라는 함수를 만들어 주었다.

- study 함수 안에 Swing Study를 출력하고 매개변수로 받은 fun을 출력할 수 있는 문장을 작성하였다.

- 함수 호출 부분인 study fun에서 fun은 매개변수이고, study는 함수 이름이다. (*매개 변수는 필요하면 적고 그렇지 않으면 안 적어도 무방하다.)

 

add.sh

- 매개 변수를 2개 받아야 한다.

* sum= 띄어쓰기 X주의!

- sum $1 $2는 sum 함수를 호출하는 것이다.

- $?는 sum함수의 리턴 값이다.

 

'Linux' 카테고리의 다른 글

[Linux]5_3. 별찍기와 구구단  (0) 2020.06.09
[Linux]5_2. 계산기 프로그램  (0) 2020.06.09
[Linux]4_3. if-else  (0) 2020.06.02
[Linux]4_2. read, 매개변수  (0) 2020.06.02
[Linux] 4_1. 명령어 정리 및 실습  (0) 2020.06.02