Shell Script Programming

Hyungseop Lee·2023년 9월 24일
0
post-thumbnail

Shell script는 왜 쓰는가?

  1. 업무 자동화
  2. Combine long and repetitive sequences of commands into one simple command
  3. Share procedures among several users
  4. Provide a controlled interface to users
  5. Create new commands using combination of utilities
  6. Quick prototyping, no need to compile

Shell script interpreter

  1. /bin/bash
    Linux의 default shell script interpreter
  2. /bin/tcsh
  3. /bin/csh
  4. /bin/ksh
  5. /bin/sh

Shell script 기본 문법

Special Characters

  • # : 주석
  • #! : 어떠한 interpreter를 쓸 것인지 지정.
    ex) #! /bin/bash
  • \ : end of a line
  • ; : Used to interpret what follows as a new command (다음 코드 실행)
  • $ : $(변수)
  • && : The action will be performed only if the conditions evaluate to true
  • || : The action will be performed if any of the conditions evaluate to true
  • ! : NOT

Functions

Built-in Shell Commands

Command Substitution

  • 명령어의 결과를 다른 명령의 일부로 사용가능

Variables

  • 변수 이름 참조할 때는 $기호를 변수 앞에 붙임

Exporting Variables

  • script 내에서 선언된 변수는 script 안에서만 유효함.
    child process가 변수를 접근하도록 하기 위해서는 export를 명시적으로 해줘야 함.
export VAR=value
VAR=value; export VAR

Script parameters

  • $0 : Script name
  • $1 : First parameter
  • $* : All parameters
  • $# : Number of parameters
  • $? : Return value

example

if

testing for files

  • man 1 test

testing for strings

  • string 비교, 순서 비교 등

Numerical tests

  • 산술연산자

Arithmetic Expression

  • 산술 연산
    1. expr utility 이용
    2. $(( ... ))
    3. let 이용
  • Example :

for, while, until

for

while

until


Example

  • 1~100 Random 숫자를 생성하여 사용자가 그 random 숫자를 맞추는 게임

응용

$?

  • $? :
    status code를 반환하는 변수이다.
  • main 함수에서 return 10을 했으니 10을 반환한다.
  • 아래 예시는
    test라는 명령어인데, []로 대체하여 사용할 수 있다.
    a.out이라는 실행파일이 있는지 를 확인하기 위해 -e 옵션을 붙임.
    a.out이라는 실행파일이 있으니 status code 0 반환.
    b.out이라는 실행파일은 없으니 status code 1 반환.

; && ||

  • ;
    은 명령어를 순차적으로 실행하기 위해 사용된다.
  • && :
    앞의 명령어가 정상실행되면, 다음꺼 실행.
  • || :
    앞의 명령어가 정상종료가 될 때까지 실행.

$*, $#

  • $0 : 실행파일 이름
  • $* : 모든 인자들
  • $# : 인자의 개수

$()

ex1

ex2

  • 현재 디렉터리에 있는 .txt 파일들과 해당 파일의 word count 출력

ex3

  • 현재 디렉터리에 있는 모든 파일 출력. 단, 실행파일 제외.
profile
Efficient Deep Learning Model, Compression

0개의 댓글