Shell Script

GAON PARK·2023년 11월 14일
0
post-custom-banner
  • 언제 어떤 조건으로 어떤 명령을 실행할 것인가, 파일을 컨텐트로 읽을 것인가, 로그 파일을 작성할 것인가 등을 할 수 있음
    - Crontab을 이용하여 이 명령어 집합을 주기적으로 실행하는 것도 가능
  • 프로그램 세팅 환경설정
  • 코드 변경이 잦은 빌드 자동화 스크립트 작성에는 권장되지 않음
    - .c 파일 하나만 수정해도 모든 c 파일이 다시 Object 파일로 만들어져서 build 시간이 더 오래 걸리기 때문

규칙

  • 모든 shell script 확장자 = .sh
  • 파일 맨 위에 #!/bin/xxxx를 적을 것
    - 이 문서는 xxxx shell script 임을 알리는 것
    - bash shell = #!/bin/bash
    - dash shell = #!/bin/sh
    - python shell script = #!/usr/bin/python3
  • 실행 커맨드
    - source x.sh
    - ./x.sh

문법

입/출력

  • 입력 = read
  • 출력 = echo
#! /bin/bash
echo "HI"
echo "WHAT's your name"
read ans

echo $ans "<-- WOW"

변수

  • 모든 값을 문자열 취급
  • 스페이스를 아무리 많이 입력해도 1개 처리
  • argument 변수 사용 가능 = $
echo $1
echo $1
echo $2
  • 산술 연산 = $(())
bts=123
abc=$(($bts + 123))
echo $abc

# => 246
  • 실행 결과를 변수에 저장 = 변수=$(쉘 명령어)
DATE=$(date)
echo $DATE "GOOD"
echo $DATE "HAHA"

if 문

  • 띄어쓰기 조심, 대괄호 양쪽에 스페이스!!!
a=BTS
if [ $a = "BTS" ] ;then
    echo "BTS GOGO"
else
    echo "NO!"
fi

if option

optionmean
-ltless then
-eqequal
=문자열 비교
-gtgreater then
-nenot equal
-gegreater equal
-leless equal
-n “문자열”문자열 길이가 0보다 클 때
-z “문자열”문자열 길이가 0일 때
-x파일이 존재하고 권한이 실행(+x)일 때
-f파일이 존재하고 regular 파일일 때

sample code

# -lt : less than 보다 작으면
if [ $a -lt 50 ] ;then
	echo "SMALL"
fi

배열

  • 만들 때 = ()
  • 출력할 때 = {}
arr=(10 20 30) # , 로 분리하면 하나로 취급한다. 공백으로 나누자
echo ${arr[0]}
echo ${arr[1]}
echo ${arr[2]}

for 문

for ((i=0; i<10; i++))
do
    echo "HI"
done

함수

  • 호출 시 이름만 입력
abc(){
	printf "HIHI\n"
}

abc

환경 변수

문법

기능문법
전체 읽기printfenv
하나만 읽기$변수명
값 저장하기export [변수] = [값]
-> 이렇게 저장한 변수는 유지가 안 됨
-> ~/bashrc 파일에 추가하여 영구 보존!
if [ $KFC = "HELLO" ] ;then
    echo OH GOOD HI
else 
    echo OH MY GOD
fi

# 결과 => OH GOOD HI
post-custom-banner

0개의 댓글