< 쉘 스크립트 >

 

vi 편집기에 위와 같은 내용을 입력한다.

#!는 매직 넘버로 스크립트를 처리하는 인터프리터이다. 즉, 스크립트 파일을 bash 쉘로 실행시킨다는 의미이다.

echo는 화면에 문자열을 출력하기 위해 사용된다.

exit 10은 종료 상태를 나타낸다.

 

hello.sh 파일에 실행 권한을 부여해준 후 실행시키면 입력한 내용이 잘 출력되는 것을 볼 수 있다.

위와 같이 실행하는 방법은 ./와 bash를 쓰는 두 가지 방법이 있다.

 

ls명령어를 이용하여 hello.sh 파일이 생성된 것을 확인할 수 있다.

exit [종료상태]는 종료값을 지정하며 스크립트를 종료하고 $? 변수에 저장된다. ($?는 가장 최근 명령어의 종료 상태)

종료 상태의 범위는 0~255이고 0은 성공, 1~255는 오류코드를 나타낸다.

ls -l 후의 $?은 성공했으므로 0이고 ./hello.sh의 종료상태는 10으로 입력해두었기 때문에 10으로 나오는 것을 볼 수 있다.

 

< 변수사용과 매개변수 >

 

vi 편집기로 name.sh 이라는 파일에 내용을 입력한다.

위와 같이 변수를 선언할 수 있는데, 변수 선언 시 = 앞뒤로 공백이 없어야 한다.

변수의 값을 지정해주기 위해 name 앞에 $을 붙여야한다.

※ $( )는 실행결과를, $(( ))는 계산결과를 나타낸다.

 

저장하고 name.sh 파일을 출력하면 변수에 저장된 값으로 잘 출력되는 것을 볼 수 있다.

 

큰 따옴표(" ")는 변수의 값을 잘 출력해주지만, 작은 따옴표(' ')는 $의 의미를 없앤다.

 

또한, 문자열에서 큰 따옴표(" ")는 공백을 보존하여 출력해주지만 따옴표 없는 echo는 보존해주지 않는다.

 

그리고, 역 따옴표(` `)는 실행 결과를 나타낸다.

 

vi 편집기로 prac1이라는 파일에 위와 같은 내용을 입력한다.

prac1 파일에 실행 권한을 부여한 후 실행시키면 다음과 같다.

 

그냥 echo는 공백을 보존해주지 않기 때문에 a bcd로 출력이 된다.

큰 따옴표(" ")는 공백을 보존해주기 때문에 입력한 내용이 그대로 출력되는 것을 확인할 수 있다.

작은 따옴표(' ')는 $의미를 없애주기 때문에 $b로 출력되는 것을 볼 수 있다.

 

vi 편집기로 param1.sh 라는 파일에 위와 같은 내용을 입력해준다.

$* : 입력된 매개변수들의 목록

$# : 입력된 매개변수들의 수

$0 : 쉘 스크립트 이름

$1, $2, ··· : 매개변수 1, 2, ···

\ : $의 의미를 잃음

※ 따옴표(" ")로 묶는 것은 하나의 매개변수로 취급한다.

 

먼저 param1.sh 파일에 실행 권한을 부여해준다.

매개변수로 a b c 를 입력했으므로 $*에는 a b c가 출력되고, 매개변수의 수는 3개이므로 $#에는 3이 출력된다.

쉘 스크립트 이름은 param1.sh이므로 $0에 잘 출력되었고 $1, $2에는 매개변수 1(=a), 매개변수 2(=b)가 출력된 것을 확인할 수 있다.

 

위와 같이 date 명령어를 통해 날짜와 시간을 알 수 있다.

date +포맷을 입력하여 세부 정보를 알 수 있는데, 이 때 +와 포맷 사이에 공백은 없어야 한다.

 

※ 명령어 조건 실행에는 논리곱(&&)과 논리합(||)이 있다.

명령어1 && 명령어2는 논리곱으로 명령어1의 실행 결과가 성공이면 명령어2를 실행한다.

명령어1 || 명령어2는 논리합으로 명령어1의 실행 결과가 실패면 명령어2를 실행한다.

 

< 입력 >

 

vi 편집기로 read1.sh 파일에 위와 같은 내용을 입력한다.

read는 표준 입력을 문자열을 받는 쉘 내장 명령어로 형식은 read [옵션] [변수명]이다.

 

read1.sh 파일에 실행 권한을 부여한 후 실행시키면 read명령어로 인해 원하는 내용을 입력할 수 있고,

다음 행에서 입력한 내용이 잘 출력되는 것을 볼 수 있다.

※ 입력과 출력을 한 행에서 처리하고 싶다면 -p라는 옵션을 주면 된다.

 

vi 편집기로 read2.sh 라는 파일에 위와 같은 내용을 입력한다.

입력과 출력을 한 행에서 처리하기 위해 -p 옵션을 사용했다.

또한, if문으로 문자열을 비교하여 입력한 문자열이 같다면 same, 다르다면 not same, 끝났다면 end가 출력되도록 했다.

※ if문을 쓸 때 괄호([ ])와 비교 연산자(= 또는 ==) 앞뒤에 반드시 공백이 있어야 한다.

 

위와 같이 name1과 name2는 한 행에서 입력과 출력을 받을 수 있고,

입력한 문자가 같다면 same, 다르다면 not same, 조건문이 끝났으면 end가 출력되는 것을 확인할 수 있다.

 

vi 편집기로 terminator1 파일에 위와 같은 내용을 입력한다.

명령 << [입력 종료문자]를 입력하면 입력 종료문자가 입력될 때까지 키보드 입력을 받는다.

이것은 표준 입력을 사용자로부터 받아들이지 않고 자동으로 처리할 때 사용한다.

 

위와 같이 실행 권한을 부여한 후 실행시키면 vi 편집기에서 입력했던 내용이 잘 출력되는 것을 볼 수 있다.

 

< 실습 1 >

1. 홈디렉토리(~) 에 password라는 디렉토리 만들기
2. password 디렉토리로 이동하기
3. 현재 디렉토리로, /etc/passwd 파일을 복사해온다.

 

#! /bin/bash를 입력하여 실행할 쉘스크립트를 만들어 준다.

mkdir을 이용하여 홈 디렉토리(~)에 password라는 디렉토리를 만든다.

password 디렉토리로 이동하기 위해 cd라는 명령어를 사용하여 이동한 후

현재 디렉토리(.)로 /etc/passwd 파일을 복사해오기 위해 명령어 cp를 사용한다.

 

위와 같이 ls를 통해 password라는 디렉토리가 홈 디렉토리에 생성된 것을 볼 수 있고,

password 디렉토리로 이동한 후 ls로 파일 목록을 확인하면 passwd라는 파일이 잘 복사된 것을 확인할 수 있다.

 

< 실습 2 >

c 파일을 매개변수로 받아 컴파일 하여 실행해주는 스크립트 작성하기

 

vi 편집기로 param2.sh라는 파일에 인터프리터를 알려준 후

c 파일을 매개변수로 받아 컴파일 하기 위해 gcc $1을 입력해준다. ($1은 매개변수1을 의미한다.)

또한 a.out을 실행시키기 위해 echo $( )를 입력해준다.

 

vi 편집기로 hello.c라는 파일에 위와 같은 내용을 입력해준다.

 

param2.sh라는 파일에 실행 권한을 부여해준 후 hello.c라는 매개변수를 실행시킬 수 있도록 입력해주면

Hello Linux라는 hello.c의 파일 내용이 잘 출력되는 것을 확인할 수 있다.

 

 

'2020-1 STUDY > Linux Study' 카테고리의 다른 글

Linux Study Week 4 - 3  (0) 2020.06.01
Linux Study Week 4 - 2  (0) 2020.06.01
Linux Study Week 3 - 3  (0) 2020.05.24
Linux Study Week 3 - 2  (0) 2020.05.24
Linux Study Week 3 - 1  (0) 2020.05.24

+ Recent posts