카테고리 없음

셸 스크립트

하마롱크 2022. 1. 5. 08:57

1.1 셸의 기본

- 셸은 사용자가 입력한 명령을 해석해 커널로 전달 or 커널의 처리 결과를 사용자에게 전달

 

 

1.1.1 CentOSbash

- CentOS의 기본 셸은 bash=Bourne Shell을 기반으로 Korn ShellC Shell의 장점을 합친 것

 

- bash의 특징

Alias 기능(명령어 단축 기능)

History 기능

연산 기능

Job Control 기능

자동 이름 완성 기능(Tab)

프롬프트 제어 기능

명령 편집 기능

 

 

1.1.2 셸 명령문 처리 방법

- 셸 명령문은 명령문과 함께 여러 가지 옵션이나 인자를 사용할 수 있다.

(프롬프트) 명령어 [옵션...] [인자...]

# ls –l
# rm –rf /mydir
# find . / -name “*.conf”

 

 

1.1.3 환경변수

설정된 환경 변수는 echo $환경변수이름 형식으로 확인 가능

 

 

1.1.3.1 주요 환경변수

환경변수 설명 환경변수 설명
HOME 현재 사용자의 홈 디렉터리 PATH 실행 파일을 찾는 디렉토리 경로
LANG 기본 지원되는 언어 PWD 사용자의 현재 작업 디렉토리
TERM 로그인 터미널 타입 SHELL 로그인해서 사용하는 셸
USER 현재 사용자의 이름 DISPLAY X 디스플레이 이름
COLUMNS 현재 터미널의 컬럼 수 LINES 현재 터미널 라인 수
PS1 1차 명령 프롬프트 변수 PS2 2차 명령 프롬프트
(대개는 ‘>’)
BASH BASH 셸의 경로 BASH_VERSION bash 버전
HISTFILE 히스토리 파일의 경로 HISTSIZE 히스토리 파일에 저장되는 개수
HOSTNAME 호스트의 이름 USERNAME 현재 사용자 이름
LOGNAME 로그인 이름 LS_COLORS ls 명령어의 확장자 색상 옵션
MAIL 메일을 보관하는 경로 OSTYPE 운영체제 타입

 

 

1.1.3.2 환경변수 값 변경

환경변수 값을 변경하려면 export 환경변수=값 형식을 실행한다

 

그 외의 환경변수는 printenv 명령을 실행하면 되지만 안되는 것도 존재함

 

 

1.2 셸 스크립트 프로그래밍 실습

- 셸 스크립트는 C 언어와 유사한 방법으로 프로그래밍

- 변수, 반복문, 제어문 사용 가능

- 별도로 컴파일하지 않고 텍스트 파일 형태로 셸에서 바로 실행 가능

- 주로 vi 에디터나 gedit으로 작성

 

 

1.2.1 셸 스크립트 작성과 실행

- vi 파일명.sh 혹은 gedit 파일명.sh와 같은 형식으로 작성

- sh 파일명.sh로 실행가능

- 셸 스크립트 파일의 속성을 실행 가능으로 변경한 후 ./스크립트파일 명령으로도 실행가능

  chmod +x 파일명으로 실행가능 속성 추가

  ,/스크립트파일에서 .은 현재 디렉터리를 의미하는데 현재 디렉터리가 $PATH의 환경변 수에 설정되어 있지 않기 때문.   일반적으로 명령이나 스크립트 이름을 입력하면 셸은 $PATH 환경변수에 설정된 디렉터리만 찾아본다.

 

 

1.2.2 변수

변수는 필요한 값을 계속 변경해서 저장하는 개념

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

 

1.2.2.1 변수의 기본

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

변수에 넣는 모든 값은 문자열로 취급. 숫자를 넣어도 문자로 취급.

변수 이름은 대소문자를 구분한다

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

 

1.2.2.2 변수의 입력과 출력

‘$’라는 문자가 들어간 글자를 출력하려면 ‘’로 묶어주거나 앞에‘/’를 붙여야 한다. 또한 “”로 변수를 묶어줘도 되고 안 묶어도 된다.

#bar1.sh
#!/bin/sh
myvar=“Hi Woo”
echo $myvar
echo “$myvar”
echo ‘$myvar’
echo /$myvar
exit 0

#결과
sh var1.sh
Hi woo
Hi woo
$myvar
$myvar

 

1.2.2.3 숫자계산

변수에 넣은 값은 모두 문자로 취급하기 때문에 연산을 하려면 expr 키워드를 사용하면 된다

수식과 함께 `(역따음표)로 묶어줘야 한다.

괄호를 사용하려면 그 앞에 /(역슬래시)를 붙여줘야 한다.

+,-,/와 달리 *는 예외적으로 앞에 /를 붙여줘야 한다.

 

 

1.2.2.4 파라미터 변수

파라미터 변수는 $0, $1, $2 등의 형태를 갖는다. 이는 실행하는 명령의 부분 하나하나를 변수로 지정한다는 의미이다.