본문 바로가기
가상화(VMware)/LINUX

LINUX UBUNTU-SHELL SCRIPT

by Net Twerking 2022. 6. 2.
반응형

SHELL 

사용자가 입력한 명령을 해석해 커널로 전달하거나, 커널의 처리 결과를 사용자에게 전달하는 역할.

SERVER B의 "text mode"나 window의 "terminal"같은 명령을 입력하는 환경.

 

UBUNTU의 BASH SHELL 

UBUNTU에서 기본적으로 사용하는 SHELL 은 BASH 이다. 이는 BOURNE SHELL (SH) 을 기반으로

KORN SHELL 과 C SHELL의 이점만 합한것이라 보면된다.

 

BASH의 특징

ALIAS 기능 (COMMAND 단축 기능)

HISTORY 기능 (SCROLL)

연산 기능

JOB CONTROL 기능

자동 이름 완성 기능(TAB)

PROMPT CONTROL 기능

COMMAND EDIT 기능

 

SHELL 의 COMMAND 처리 방법 

SHELL COMMAND는 COMMAND와 함꼐 여러가지 옵션이나 여러 인자를 사용할 수 있다.

(PROMPT) COMMAND [OPTION] [ARGUMENT]

 

 

SHELL 변수

변수는 필요한 값을 계속 변경해 저장한다는 개념. SHELL SCRIPT의 구조는 변경할 필요가 없는데, 설정해야 하는 값이 상황에 따라 다르다면 변수에 필요한 값을 계속 바꿔가는 방법으로 프로그래밍해서 다양한 상황에 대처할 수 있다.

 

변수의 기본

SHELL SCRIPT에서는 변수를 사용하기 전에 미리 선언하지 않으며, 처음 변수에 값이 할당되면 자동으로 변수가 생성된다.

 

* 변수에 넣는 모든 값은 문자열(string)로 취급한다. ** 숫자를 넣어도 문자로 취급.

* 변수 이름은 대/소문자를 구분한다. ** $aa라는 변수 이름과 $AA라는 변수 이름은 다름.

* 변수를 대입할때 ' = ' 좌우에는 공백이 없어야한다.

 

숫자 계산

변수에 넣은 값은 모두 문자열로 취급. 만약 변수에 들어 있는 값에 +,-,*,/ 등의 연산을 하려면 expr 키워드를 사용해야 한다. 수식과 함께 숫자 1ㅂ 왼쪽에 있는 역따옴표 () 로 묶어 주어야 한다. 그리고 수식에 괋괄호를 사용하려면 앞에 역슬래시\ 를 붙여야 한다. +,-,/ 와 달리 multiple * 은 예외적으로 앞에 역슬래시 \ 를 붙여야 한다.

파라미터 변수 

파라미터 변수는 $0 $1 $2 등의 형태를 갖는다. 즉, COMMAND에 포함된 모든 단어를 각자 $변수 형식으로 지정한다.

ex) apt -y install gftp command를 실행 한다고 하면, 파라미터 변수는 다음과 같이 정 할 수 있다.

명령 apt -y install gftp
파라미터 변수 $0 $1 $2 $3


practice)

HDD1개 추가 / HDD추가 SHELL SCRIPT로 작성 

1. HDD 추가

2. PARTITION 작업

3. FILE SYSTEM 만들기

4. DIRECTORY 생성

5. MOUNT 작업

6. /etc/fstab 추가

 

1. 변수 만들기

2. prarameter 사용

3. redirection

 

*shell script 생성

remount까지 확인 

/dev/sdk1 >> /newhdd


if문 case문

기본 if문

if [ 조건 ] > * [ 조건 ] 사이의 각 단어에는 공백이 있어야 한다.

then 

   참일 경우 실행

fi 

 

ex) if1.sh

if ~ else 문

ex) if2.sh

[ ] 사이에 참과 거짓을 구분하는 조건식이 들어간다.

= 은 자열이 같은지 비교하며, != 은 문자열이 같지 않은지 비교한다.

if1.sh 에서는 조건식이 = << 같은지 비교하므로 echo "참입니다."를 실행한다.

** [ ] 대신 test라는 키워드를 사용 할수도 있다.

table)조건문에 들어가는 비교 연산자

문자열 비교 결과
"문자열1" = "문자열2" 두 문자열이 같으면 참
"문자열1" != "문자열2" 두 문자열이 같지 않으면 참
-n "문자열" 문자열이 NULL(빈 문자열)이 아니면 참
-Z "문자열" 문자열이 NULL(빈 문자열)이면 참
산술 비교 결과
수식1 -eq 수식2 두 수식(또는 변수)이 같으면 참
수식1 -ne 수식2 두 수식(또는 변수)이 같지 않으면 참
수식1 -gt 수식2 수식  1이 크면 참
수식1 -ge 수식2 수식 1이 크거나 같으면 참
수식1 -lt 수식2 수식 1이 작으면 참
수식1 -le 수식2 수식 1이 작거나 같으면 참
!수식 수식이 거짓이면 참

 

 

table)파일과 관련된 조건

파일 조건 결과
-d 파일이름 파일이 디렉토리면 참
-e 파일이름 파일이 존재하면 참
-f 파일이름 파일이 일반 파일이면 참
-g 파일이름 파일에 set-group-id가 설정되면 참
-r 파일이름 파일이 읽기가능이면 참
-s 파일이름 파일 크기가 0이 아니면 참
-u 파일이름 파일에 set-user-id가 설정되면 참
-w 파일이름 파일이 쓰기 가능 상태면 참
-x 파일이름 파일이 실행 가능 상태면 참

practice) 

test.txt 라는 빈 파일 생성

touch test.txt 

test.txt가 size = 0 > 빈 파일 입니다.

               size =/0 > 내용이 존재합니다.

구현 해보기.

case ~ esac 문

if문은은 참과 거짓이라는 두 가지 경우만 사용할 수 있다 = (이중분기)

여러가지 경웅우의 수가 있다면 if문을 중복해서 사용해야하므로 구문이 복잡해 지는데, 이때 사용하는것이

case문이다. 이를 '다중 분기' 라고 한다.

case문 활용 practice)

 

반응형

'가상화(VMware) > LINUX' 카테고리의 다른 글

LINUX UBUNTU-SHELL SCRIPT2  (0) 2022.06.03
LINUX UBUNTU - PXE SERVER  (0) 2022.06.02
LINUX MAIL-SERVER  (0) 2022.05.30
DNS(NAME SERVER)  (0) 2022.05.30
LINUX UBUNTU DBMS  (0) 2022.05.27