Shell Script [Linux]
Post

Shell Script [Linux]

1. Shell Script

  • 자동화 프로그램 만들 때 사용
  • 확장자 : .sh
  • 실행법
    1
    2
    
    $ source [File Name].sh
    $ ./go.sh # 실행권한 줘야함, 간헐적으로 사용
    

CLI Shell 여러 가지 존재- bash, dash 등등 …
bash : 기능 많음, 주로 리눅스
dash : 경량, 임베디드에 많이 씀
shell 확인법 : $cat /etc/shells

2. 작성 문법

1. Shebang(쉬뱅, #!)

  • 파일 맨위에 작성
  • 어느 Shell 인지 나타냄
    1
    2
    
    #!/bin/bash (bash shell)
    #!/bin/sh (dash shell)
    

2. 출력 & 입력

  • 출략 : echoㅤㅤㅤ입력 : read

3. 변수

  • 모든 값을 문자열로 취급
1
2
3
4
5
6
7
8
9
#!/bin bash

# 선언
변수명=NAME=ZIVALLO

# 변수 사용
$변수명
echo "My name is "$NAME

4. Argument

  • 받은 Argument를 $1, $2, $3 … 로 사용가능
1
2
3
4
5
6
#!/bin bash

# Argument 사용
echo $1
echo $2
echo $3

5. 산술 연산

  • $(( )) 사용
1
2
3
#!/bin bash

echo $(($1+$2))

6. 한줄 주석

1
# 한줄 주석

7. 실행결과 변수 저장

  • 변수명=$(Shell 명령어)
1
2
3
#!/bin bash

echo $(date)

8. if문1

  • 띄어쓰기 중요
  • 비교식
비교식의미비교식의미
-lt<(less than)-gt>(greater than)
-le<=-ge>=
-eq=-ne!=
||or&&and
  • 파일 관련 조건식
조건식의미조건식의미
-n “문자열”문자열길이 > 0 일때-z “문자열”문자열길이 == 0 일때
-x “파일”파일 존재, 권한 실행(+x) 일때-f “파일”파일 존재, Ruguler 파일 일때
1
2
3
4
5
6
7
8
9
10
11
#!/bin bash

a=$1

if [ $a = "100" ];then
   echo first
elif [ $a -eq "200" ];then
   echo second
else
   echo third
fi

for, printf, 함수, 배열 사용 가능하지만 자주 사용하지 않음.

3. Environmet Variable(환경 변수)

  • Shell 에 저장되는 변수 (사용자, Process, 리눅스 등 다같이 사용)
  • 터미널 종료시 없어짐 -> ~/.bashrc2 에 추가
1
2
3
4
5
6
7
8
9
10
11
12
# 환경 변수 전체 읽기
$ printenv

# 하나만 읽기
$ echo $변수명
$ printenv | grep [변수명]

# 변수 저장
export [변수명]=[값]

# 변수 제거
unset [변수명]

4. alias

  • 별명을 만들어내는 명령어
    1
    2
    
    alias f1='mkdir ./ziv;ls'
    alias f2='rm -r ./ziv;ls'
    

5. Crontab

  • 주기적으로 Shell Script 파일 수행시켜야 할때 사용
    1. Shell Script 파일 작성
    2. sh 파일에 +x 실행권한 주기
      1
      
      $ sudo chmod +x ~/test.sh
      
    3. /etc/crontab 파일에 추가
      1
      
      $ sudo vi /etc/crontab
      

      표현식의미
      * * * * *매 분마다 수행
      */5 * * * *매 5분마다 수행
      * */5 * * *매 5시간마다 수행
      * 8 * * *매일 8시마다 수행

  1. Shell script(쉘) if 조건문, 조건식 

  2. bash shell이 시작될때 자동 시작되는 bash script 파일