상세 컨텐츠

본문 제목

[Linux] 5주차 과제1

운영체제/Linux

by 밍구21 2020. 6. 9. 18:30

본문

//case문 -

case $변수이름 in

조건문) 실행문;;

조건문) 실행문;;

~

esac

 

 


 

 

#case문_예제1

vi편집기로 파일을 생성해주었다.

bash쉘 스크립트 작성을 위해 매직넘버 작성

이 스크립트에선 score이 변수 이름이다.

사용자에게 따로 입력을 받지 않고 내가 선언한 뒤 2로 값을 초기화해줬다.

각 조건은 )로 끝나고 실행문은 ;;로 끝난다.

 

내가 score을 2로 초기화 시켰으니 이 값이 case문에서 적용돼 B가 출력돼야 한다.

 

실행 권한을 준 뒤 실행 시키니 정상적으로 B가 출력됐다.

 

 


 

 

#case문_실습1

vi편집기로 파일 생성!

 

사용자의 입력을 받는 명령어 read에 입출력을 한 줄에 같이 하는 옵션 -p를 사용해

"input number: "를 출력한 뒤 사용자가 입력한 숫자를 number라는 변수에 저장한다.

number에 저장된 변수는 케이스 문에서

사용자가 입력한 숫자가 3,6,9라면 "hello 사용자가 입력한 숫자"를 출력할 것이고

그 외의 다른 숫자라면 "Bye"를 출력할 것이다.

 

실행 권한을 주고

실행도 잘 된다.

 

 

 


 

 

for문-

for 변수이름 in 리스트

do

명령어

done

 

 


 

 

#for문_예제1

num이라는 변수에 1 2 3 4 5 를 저장한 뒤

"number is $num"를 출력한다.

 

실행 권한을 준 뒤 실행한 결과 잘 된다

 

 


for문-

for((변수이름=초기값; 조건문; 실행결과))

do

명령문

done

 


#for문_예제2

 

아까와 같이 이름이 num인 변수를 1로 초기화 시킨 뒤 변수가 5일 때까지

"number is $num"을 출력시킨다.

한 번 실행이 끝나면 num++가 돼 num이 1 커진 뒤 조건이 맞을 때까지 반복한다.

출력 결과 딩동댕

 

 

 

for문-처음 보여준 for문 예시에서 리스트를 따로 선언해준다.

 

list = (리스트)

for 변수이름 in ${list[*]}

do

명령어

done 

 


 

#for문_예제3

 

list를 미리 선언해 1 2 3 4 5를 입력해준다.

그 뒤 num의 리스트 자리에 ${}로 list를 불러온다.

 

잘 된다.

 

 


 

#for문_실습

 

 

아까 보여준 for문 예제 중 예제3을 변형해서 작성해줬다.

굿굿

 

 


 

while문-

while [조건]

do

명령문

done

 


예제를 보기 전 조건문에서 사용될 수 있는 비교 연산자를 살펴보자.

 

산술 비교 연산자 의미
A -eq B A == B (equal)
A -ne B A != B  (not equal)
A -gt B A > B   (greater than)
A -ge B A >= B (greater than or equal)
A -lt B A < B   (less than)
A -le B A <= B (less than or equal)
문자열 비교 연산자 의미
문자열A = 문자열B A, B가 같으면
문자열A != 문자열B A, B가 다르면
-n 문자열 문자열이 null이 아니면 참
-z 문자열 문자열이 null이면 참
파일 관련 연산자 의미
-a 파일명 /-e 파일명 해당 파일이 존재하면 참
-r 파일명 해당 파일을 읽을 수 있으면 참
-w 파일명 해당 파일을 쓸 수 있으면 참
-x 파일명 해당 파일을 실행할 수 있으면 참
-f 파일명 해당 파일이 일반 파일이면 참
-d 파일명 해당 파일이 디렉토리면 참


 

#while문_예제1

 

num이란 변수를 선언 뒤 1로 초기화 시키고

sum이란 변수를 선언 뒤 0로 초기화 시켰다.

while문 조건은 num <= 10 이다.

명령문은

sum = sum+num

num = num + 1

고로 1부터 10까지 더하는 것이다...

 

가우스는 대단하다.

 

 

 


 

#while문_실습

 

다섯 줄의 별을 출력해주기 위해 num변수를 1로 선언 및 초기화를 시킨 뒤

첫번째 while문을 num <= 5로 설정해 다섯 줄을 맞춰준다.

 

 

 

 

 


selct문 - 메뉴를 생성할 수 있는 반복 실행문

PS3="출력문"

list=(메뉴1 메뉴2 ~~)

select 변수 in ${list[*]}

do

명령어

REPLY=

done

 

PS3: 프롬프트 변경위한 쉘 변수

REPLY가 null일 때 프롬프트(PS3 값)를 출력한다.

계속 출력시키려면 반복마다 REPLY를 null로 설정해야한다. REPLY=

 


 

#select문_예제

list에 Walk Run Stop 세 항목을 입력해준다

select문을 사용하면 해당 세 항목에 번호가 자동 부여된다.

사용자가 입력하는 값은 변수 work에 저장된다.

하지만 변수에는 입력한 숫자가 저장되는 게 아니라 숫자에 해당하는 항목이 저장된다.

 

 

실행문을 보면 그걸 알 수 있다. $work를 출력했지만 사용자가 입력한 숫자가 아닌 해당 숫자에 해당하는 항목이 출력된다.

break를 따로 설정하지 않아 무한 반복되기 때문에 Ctrl+C를 눌러 탈출할 수 있다.

 

 


#while문_실습

list를 사용해 네 항목 Spring Summer Fall Winter를 입력해주고

select문을 사용해 네 항목에 자동으로 번호를 부여해주고

변수 season에 사용자가 입력해준 숫자에 해당하는 항목을 저장할 것이다.

부여된 숫자가 아닌 다른 숫자를 입력하면 반복문을 탈출하도록 break를 걸었다.

 

잘 된다.


#루프 반복 및 탈출

 

//break

-반복 루프 안에서 사용

-이후 실행 무시, 루프 탈출

 

//continue

-반복 루프 안에서 사용

-이후 실행 무시, 루프의 맨 처음으로 돌아감



#함수 정의

함수 이름()

{
명령어

}

 

#함수 호출

함수이름 매개변수


 

study라는 함수에 매개변수1인 $1를 출력하는 명령어를 입력하고.

함수 밖에 매개변수 fun을 입력해준다

출력 결과.

파일을 실행할 때 입력해주는 매개 변수와는 다른 것인지 실험을 해줬다.

study함수 안에서 명령된 매개변수이기 때문에 별개임을 알 수 있다.

 

그럼 study함수 밖에 따로 파일 매개변수1,2를 출력해주는 명령어를 입력하고

실행해주자 잘 된다.

 

 

 



#함수종료

<함수 종료 조건>

1. 함수 본문 안의 마지막 문장 실행

2. return문 실행

   return 숫자

   지정한 숫자가 함수 종료값이 돼 $?에 저장됨


#함수_예제2

sum 함수 안에서 sum함수 매개변수 1, 2를 더한 값을 변수 sum에 저장해준다.

그리고 그 값을 return문의 종료값으로 지정해준다.

 

에제1과 다르게 sum함수의 매개변수를 따로 지정해주지 않고

파일을 실행할 때 입력하는 매개변수를 sum 함수의 매개변수로 지정해주었다.

 

 

굿

'운영체제 > Linux' 카테고리의 다른 글

[Linux] 5주차 과제3 -별찍기, 구구단 출력  (0) 2020.06.09
[Linux] 5주차 과제2 -계산기 스크립트 작성  (0) 2020.06.09
[Linux] 4주 과제3  (0) 2020.06.02
[Linux] 4주 과제2  (0) 2020.06.02
[Linux] 4주 과제 1  (0) 2020.06.02

관련글 더보기