본문 바로가기

TEAM STUDY/LINUX

쉘 스크립트와 쉘 변수 다루기

728x90
반응형

스크립트

  • 인터프리터라 불리는 다른 프로그램에 의해 실행되는 프로그램
  • 자바 스크립트, Perl, 파이썬 등이 있음
  • 최종사용자가 응용 프로그램의 동작을 사용자의 요구에 맞게 수행할 수 있도록 해줌
  • 스크립트 언어라고도 하며 응용 프로그램과 독립하여 사용

 

셸 스크립트

  • 셸이 실행하는 프로그램
  • 유닉스 명령 + 셸이 제공하는 프로그램 구성 요소
  • 셸 스크립트 파일 이름은 키워드나 에일리어스, 내장 명령과 같은 이름을 쓰지 않는 것이 바람직함

 

쉘 명령 실행 순서

  1. 에일리어스
  2. 키워드(if, while, until 등)
  3. 함수
  4. 내장 명령(cd, echo 등)
  5. 스크립트, 유틸리티 등 PATH 경로에 있는 실행 가능한 파일

 

스크립트

 

 

 

  • exit [종료상태]
    • 스크립트의 종료 
    • 쉘 스크립트 문서이 끝
    • 기능: 종료 상태를 $? 변수에 저장

  • 파일의 마지막 명령을 실행
  • exit 문 실행

 

셸 스크립트 구성요소

  • #!
    • 파일의 가장 처음에 위치
    • 스크립트를 실행할 프로그램 지정

  • 각 셸마다 제공하는 스크립트 언어의 문법이 조금씩 다르므로, 이 스크립트를 실행할 셸을 지정해 주어야 올바로 실행됨
  • 셸이 아닌, 다른 실행 가능한 명령을 지정해 주어도 됨

 

  • #
    • 주석 ( Comment )
    • 프로그램에 대한 설명
    • 행 전체, 또는 행의 일부를 주석으로 처리할 수 있음

 

  • 셀 명령
    • 셀이 실행할 수 있는 모든 명령어 실행 가능
    • 여러 명령을 반복 수행해야 할 때 스크립트 파일로 저장하여 실행

 

  • 셸 프로그램
    • 각 셀이 제공하는 프로그램을 위한 구문
    • 셀 변수, 인자처리, 각종 연산자, 제어문 등 포함

 

셀 프로그래밍 절차

  1. $ touch shell_script_practice.sh      // 파일 생성
  2. $ vim shell_script_practice.sh         // 파일 편집기로 파일 열기
  3. 스크립트 상단에 #!/bin/bash 추가
  4. 내용 입력 후 저장하고 빠져나옴
  5. $ chmod +x shell_script_practice.sh // 실행 권한 부여
  6. $ ./shell_script_practice.sh             // 스크립트 파일 실행

 

쉘 변수

단일 변수

  • 쉘 변수는 대소문자를 구분함
  • =를 이용해서 선언하고 $ 를 이용해서 사용
  • {} 는 parameter substitution 으로 $와 함께 감싼 부분에 변수를 대입
  • "" 로 감싸서 사용하면 더 안전 ( 문자열에도 공백도 포함해서 값을 이용할 수 있기 때문에 )
  • =는 공백 없이 붙혀서 써야한다.
  • 지역 변수에는 local 을 붙힌다.
  • 변수명 앞에 export를 붙혀주면 환경변수로 설정되어 자식 스크립트에서 사용 가능
  • 환경 변수 사용 시, 예약 변수에 주의 필요
  • 환경 변수 정의 : .bash_profil 에서 정의

 

변수 타입 지정

  • Bash 변수는 타입을 구분하지 않고 기본적으로 문자열 문맥에 따라서 연산 처리
  • declare , typeset 타입 지정 명령 지원
  • 코멘트에 있는 다른 문법 사용을 추천
  • 옵션
    • -a
      • 변수를 배열로 취급
    • -f
      • 함수명과 정의 목록 출력
    • -F
      • 함수명 목록만 출력
    • -i
      • 정수형 타입 변수 만들기
    • -r
      • 읽기 전용 변수 만들기
    • -x
      • 서브 쉘에 변수명을 전달

 

쉘변수

예약변수

  • HOME
    • 사용자의 홈 디렉터리
  • PATH
    • 실행 파일을  찾는 경로
  • LANG
    • 프로그램 사용 시 기본 지원되는 언어
  • PWD
    • 사용자의 현재 작업중인 디렉토리
  • FUNCNAME
    • 현재 함수 이름
  • SECONDS
    • 스크립트가 실행된 초 단위 시간
  • SHLVL
    • 쉘 레벨 ( 중첩된 깊이를 나타냄 )
  • SHELL
    • 로그인해서 사용하는 쉘
  • PPID
    • 부모 프로세스의 PID
  • BASH
    • BASH 실행 파일 경로
  • BASH_ENV
    • 스크립트 실행 시 BASH 시작 파일을 읽을 위치 변수
  • BASH_VERSION
    • 스크립트 실행시 BASH 시작 파일을 읽을 위치 변수
  • BASH_VERSINFO
    • 스크립트 실행시 BASH 시작 파일을 읽을 위치 변수
  • MAIL
    • 메일 보관 경로
  • MAIL CHECK
    • 메일 확인 시간
  • OSTYPE
    • 운영체제 종류
  • TERM
    • 로긴 터미널 타입
  • HOSTNAME
    • 호스트 이름
  • HOSTTYPE
    • 시스템 하드웨어 종류
  • MACHTYPE
    • 머신 종류
  • LOGNAME
    • 로그인 이름
  • UID
    • 로그인 이름
  • EUID
    • 사용자 ID
  • USER
    • 사용자의 이름
  • USERNAME
    • 사용자 이름
  • GROUPS
    • 사용자 그룹
  • HISTFILE
    • history 파일 경로
  • HISTFILESIZE
    • history 파일 크기
  • HISTSIZE
    • history 저장되는 개수
  • HISTCONTROL
    • 중복되는 명령에 대한 기록 유무
  • DISPLAY
    • 디스플레이 이름
  • IFS
    • 입력 필드 구분자 ( 기본값 : -빈칸 )
  • VISUAL
    • VUSUAL 편집기 이름
  • EDITOR
    • 기본 편집기 이름
  • COLUMMS
    • 현재 터미널이나 윈도우 터미널의 컬럼 수
  • LINES
    • 터미널의 라인 수
  • LS_COLORS
    • ls 명령의 색상 관련 옵션
  • PS1
    • 기본 프롬프트 변수
  • PS2
    • 보조 프롬프트 변수
  • PS3
    • 쉘 스크립트에서 select 사용시 프롬프트 변수
  • PS4
    • 쉘 스크립트 디버깅 모드의 프롬프트 변수
  • TMOUT
    • 0이면 제한이 없으며 time 시간 지정 시 지정한 시간 이후 로그아웃

 

 

 

 

 

 

 

728x90
반응형

'TEAM STUDY > LINUX' 카테고리의 다른 글

mkdir: cannot create directory 에러  (0) 2021.12.18
crontab 설정 기록  (0) 2021.07.23
유닉스 쉘 익히기  (0) 2021.01.16
유닉스 쉘의 기능과 종류  (0) 2021.01.16
유닉스 쉘의 기능과 종류  (0) 2021.01.16