ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [리눅스] 쉘 스크립트
    서버/리눅스 2017. 4. 3. 21:46

    #쉘 스크립트

    명령어의 자동화 작업을 실행한다.


    #1 작성방법

    #>vi <script_name>.sh : 리눅스 파일뒤에 붙여주는것은 확장자가 아니라 사용하기 편함이다.


    #2 실행

    #>sh <path>



    실습)

    #>touch script1.sh

    #>vi script1.sh

    echo "hello"

    #>sh script1.sh



    쉘스크립트안에는 해석하는 파일의 경로를 넣어놓습니다.

    #! /bin/bash

    하지만 기본값이 #! /bin/bash이므로 안써줘도 상관없습니다.


    #3 변수

    쉘스크립트 안에 변수도 작성할 수 있다.

    변수 작성도 하나의 커멘드라고 생각하면된다.

    @선언된 변수는 $(메타문자)를 앞에 붙여서 사용한다.




    #4 자료계산

    결과값의 명령어 expr을 사용해서 변수에 지정한다

    ex) num1=10;

    num2=20;

    result=`expr $num1 + $num2`

    echo $result




    간단한 사칙연산하는 스크립트도 이렇게 만들수 있겠네요.


    #5 아규먼트(파라매터, 인수인자, ...)

    변수이름을 숫자로 하면 안되는 이유

    숫자변수에는 각각의 의미가 있다.

    $0    :    쉘 스크립트 이름

    $1~  :    스크립트에 주어진 아규먼트들



    더쉽게 사칙연산을 만들 수 있겠네요.


    $#   :    주어진 아규먼트의 갯수

    $*    :    입력한 아규먼트 전부 출력

    $$   :    쉘에서 실행시 사용된 프로세스ID 출력

    $!    :    쉘에서 실행시 사용된 백그라운드 프로세스ID 출력

    $?   :    함수의 반환값



    #6 조건문

    아규먼트에 숫자가 안들어오면 에러

    op변수에 *가 그대로 들어가면 에러(*같은 경우 와일드카드로 동작할 수 있기에 \*로 사용해야 사칙연산이 가능하다)

    .... 많은 에러들이 발생할때 에러처리를 방지하거나 특정한 조건에 다른동작을 하게 해줍니다.


    #>cat /etc/profile : /etc/profile에 조건문에 대한 정보가 들어있다

    if [ 조건 ] then

    command

    exit

    elif [ 조건 ] then

    command

    exit

    else

    command

    fi


    >> elif같은경우 몇개를 작성해도 상관없으며 elif와 else는 생략이 가능하다.


    #숫자 크기 비교

    [ $A -gt $B ] : A값이 B값보다 크다

    [ $A -lt $B ] : A값이 B값보다 작다

    [ $A -ge $B ] : A값이 B값보다 크거나 같다

    [ $A -le $B ] : A값이 B값보다 작거나 같다

    [ $A -eq $B ] : A값과 B값이 같다

    [ $A -ne $B ] : A값과 B값이 다르다


    #문자열 비교하기

    [ "string" = "string" ] : 두 문자열이 같은 경우

    [ "string" != "string" ] : 두 문자열이 다른 경우

    [ -z "string" ] : 문자열의 길이가 0인 경우

    [ -n "string" ] : 문자열의 길이가 0이 아닌 경우


    #파일 비교하기

    [ -d path ] 파일이 존재하고, 디렉터리

    [ -f path ] 파일이 존재하고, 일반파일




    #7 반복문

    for    변수    in    list

    command....

    done 


    list들에는 몇개든 상관없는 데이터가 들어갈 수 있다.

    변수의 값을 이용해서 출력, 계산을 할 수있다.




    while [ 조건 ]

    do

    command

    done


    조건이 참인경우 실행되는 반복문




    3) while

    while [ 조건문 ]

    do

    command

    done


    i=1

    while [ $i -le 10 ]

    do

    echo "$i"

    i=`expr $i + 1`

    done


    ex) guest1 ~ guest30 사용자를 생성

    ex) 쉘스크립트

    1. 그룹 team1, team2 생성

    2. useradd.sh 스크립트 생성

    스크립트가 실행되면

    team1 - it1 ~ it20

    team2 - it21 ~ it40

    (기본그룹X, 그룹추가!!)

    구성원이 되도록 사용자를 생성




    '서버 > 리눅스' 카테고리의 다른 글

    [리눅스] 디스크 관리  (0) 2017.04.06
    [리눅스] 종료 명령어, 예약  (0) 2017.04.05
    [리눅스] 환경변수  (0) 2017.04.03
    [리눅스] 프로세스  (0) 2017.03.31
    [리눅스] 파일시스템, 링크파일  (0) 2017.03.30

    댓글

Designed by Tistory.