6월 3일 (Linux 셸 스크립트)
while 문
- 조건식이 참인 동안 계속 반복하는 특성을 가짐
이번은 1에서 10까지 합계를 출력하는 forin1.sh와 동일한 while문을 만들어보자
- 누적할 hap 변수를 초기화한다
- 1에서 10까지 증가할 i변수 선언
- i가 10보다 작거나 같으면 6~7행을 실행
이번은 비밀번호가 맞을때까지 계속 입력받는 스크립트를 작성해보자
until 문
- while문과 용도가 거의 같지만, until문은 조건식이 참일 때까지(거짓인 동안) 계속 반복한다.
- while2.sh를 until문으로 바꿔보자
break, continue, exit, return
- break는 주로 반복문을 종료할 때, continue는 반복문의 조건식으로 돌아가게 함
- exit는 해당 프로그램을 완전 종료, return은 함수 안에서 사용할 수 있으며 함수를 호출한 곳으로 돌아가게 한다
vmware mylearn 등록 과정
- 개인이메일 -> hanmail 빼고 gmail이나 naver이용
- 회사명 : 학교 명칭 - 학교주소
for문 구구단 출력 (셸 스크립트)
1. 화면에서 단수(ex 5단) 5 입력
2. for문 사용
3. 출력 형식은 아래
================
구구단 5단 출력
================
5 * 1 = 5
5 * 2 = 10
5 * 3 = 15
. . .
- gugudan으로 입력값 받음
- hap을 0으로 초기화
- for문으로 1~9까지의 반복을 생성
- hap은 gugudan * i 의 결과값으로 정의
- echo로 gugudan * i = hap 형식 반복 정의
while문으로 비밀번호가 3번이상 틀렸을 시 메세지 출력되게 작성
사용자 정의 함수
함수의 파라미터 사용
- hap 10 20으로 파라미터 지정
eval
- 문자열을 명령문으로 인식하고 실행함
- eval 로 str 변수 값인 ls -l 명령을 실행시킨다
export
- 외부 변수로 선언한다. 즉 선언한 변수를 다른 프로그램에서도 사용할 수 있게 한다
- exp1 의 var1과 exp2의 var1은 이름만 같고 다른 변수인 셈
- exp2에서는 var2를 외부변수로 선언하고 값을 넣는다. 외부 프로그램(exp1.sh)에서도 사용 가능
문제
- 소수점 나타내기 위한 awk 기능 사용
- printf "%.1f"를 통해 $1 / $2의 값을 소수점 뒤 1자리까지 나타내기를 함 (2.5의 값을 나타내기 위해)
printf
- %5.2는 총 5자리이며 소수점 아래 2자리까지 출력하라는 의미
set과 $(명령)
- 리눅스 명령을 결과로 사용하려면 '$명령' 형식을 사용해야 한다. 또 결과를 파라미터로 사용하고자 할 때는 set 명령과 함께 사용한다.
- $(date)는 date명령을 실행한 결과를 보여줌
- set $(date) -> 결과가 $1 $2 $3 등의 파라미터 변수에 저장됨
- 파라미터 값에 따라 (금) 이라는 값이 출력됨
shift
파라미터 변수를 왼쪽으로 한 단계씩 아래로 이동시킨다
- 결과를 누적할 str 변수를 초기화하고
- $1 파라미터가 비어있지 않은 동안에 반복 실행한다 (처음 $1은 AAA고, 한번 반복하면 $1이 BBB가 된다)
- str변수에 $1을 추가한다
- 전체 파라미터를 왼쪽으로 옮긴다. 즉 $2 -> $1, $3 -> $2, $4 -> $3 ...