SEOYUL
산호심는 블로그
SEOYUL
  • 분류 전체보기 (100)
    • IT (70)
      • Go (3)
      • Linux (34)
      • Python +Django (31)
      • RaspberryPi (2)
    • Memo (27)
      • 멀티캠퍼스 (26)

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우ⓒMIT.
SEOYUL

산호심는 블로그

셸 스크립트 문법
IT/Linux

셸 스크립트 문법

2020. 3. 6. 00:00

셸 스크립트 작성 방법


첫 번째 줄에 사용할 셸을 명시한다. 기본적인 bash를 사용하는 경우
#!/bin/bash
두 번째 줄부터는 셸 스크립트 명령등 구문을 시작한다.
작성후 755 권한 등 실행 파일로 만들어 줘야한다.
실행하기 위해서는 디렉터리 위치에서 ./파일명.sh 로 실행한다. 현재 위치를 정하지 않으면 PATH 에 등록된 디렉터리에서 검색한다.

실행 권한을 주지 않을 경우 sh 파일이름.sh으로 명령하거나 source 파일이름.sh 혹은 . 파일이름.sh로 실행 할 수 있다.

셸 프로그래밍 문법


주석

'#'을 앞에 붙여 주석문을 작성 할 수 있다.
사용법

#!/bash/sh
# Auth : yul
# Work : NULL
# TODO : add work
코드 작성

변수

셸에서 변수형은 문자열만 가지며 자료형 선언이 필요없다
변수명=값

연산자,피연산자 사이에는 공백이 있어선 안되며 변수명의 경우에 -을 제외한 특수문자나 숫자로 시작할 수 없다.
변수 사용의 응용

${변수명} : 변수의 값으로 치환한다.

${변수명:=값} : 변수가 null이면 값을 할당하여 저장하고, 값이 있으면 그 값을 사용한다.

${변수명:?값} : 변수가 null이 아니면 그 값을 사용하고, 없으면 error를 내면서 값을 보여준다.

${#변수명} : 변수의 문자열 길이를 반환한다.

${변수명:offset} : 변수에서 ofset만큼 삭제 후 리턴

${변수명:offset:length} : 변수에서 offset만큼 삭제 후 length만큼 리턴

 

Argument 호출변수
함수 foo(x,y) 에서 x,y를 파라미터라고 한다. 여기서 foo(3,4)호출시 3,4가 아규먼트가 된다. 셸에서 여러 호출법을 알아보자

$0 : 실행된 셸 스크립트 명

$1 : 첫 번째 아규먼트

$2 : 두 번째 아규먼트

$# : 아규먼트의 개수

$$ : 셸 스크립트의 PID

$? : 실행 뒤 return 값. 참 0 거짓 1

$- : 현재 셸 호출 시 사용한 옵션

 

셸 변수 확인과 설정

set : 셀 변수를 모두 출력하는 명령어

env : 셸 환경변수만 출력하는 명령어

export : 변수의 범위를 환경 데이터 공간으로하여 자식프로세스에서도 사용할 수 있게 저장 (마치 전역변수 처럼 가능)

unset : 선언된 변수 제거

 

echo 문
-e 옵션으로 escape 문자를 사용할 수 있다.

\f : Formfeed. 앞 문자열만큼 열을 밀어 이동시킴

\n : 라인 개행

\r : 캐리지 리턴. 개행후 뒷 문자만큼 앞문자를 대체하여 작성

\t : 탭 만큼 띄움

조건식

두 개체를 비교하는 조건식으로 '[' 와 ']' 사이에 공백이 필수이다.
[ 표현식 ]


문자열 비교

[ 문자열 ] : null이 아니라면 참

[ 문자열1 = 문자열2 ] : 두 문자열이 같다면 참

[ 문자열1 != 문자열2 ] : 두 문자열이 다르면 참

[ -n 문자열 ] : 문자열이 null 이 아니라면 참

[ -z string ] : 문자열이 null 이면 참

 

산술 비교

[ expr -eq expr1 ] : 두 표현식 값이 같다면 참

[ expr -ne expr1 ] : 두 표현식 값이 같지 않다면 참

[ expr -gt expr1 ] : > 이면 참

[ expr -ge expr1 ] : >= 이면 참

[ expr -lt expr1 ] : < 이면 참

[ expr -le expr1 ] : <= 이면 참

[ expr -a expr1 ] : and 의 결과 둘 다 참이면 참

[ expr -o expr1 ] : or 의 결과, 둘 중 하나가 참이면 참조건문

 

조건문

if 

타언어의 if문과 같은 조건문으로 참이라면 then 부분을 실행하고 그렇지 않으면 else 부분을 실행한다. if로 시작하여 fi로 끝난다.
if [ 조건 ]
then
   코드
else
   코드1
fi

 

case문

문자열과 일치하는 정규식을 찾아 해당하는 정규식 다음 명령어를 실행시킨다. 

오른쪽 괄호와 세미콜론은 반드시 필요하며, esac로 끝난다.

case 마지막은 *)로 해당하지 않는 모든 경우를 처리한다.

case 문자열

in

    정규식) 명령어;;

    정규식1) 명령어;;

    정규식2) 명령어;;

    *) 명령어;; 혹은 처리문

esac

 

select문

콘셸이나 Bash에만 존재하는 구문으로 나열시 사용

in의 값들이 항목으로 된 메뉴를 자동으로 생성한다. 변수에 사용자가 선택한 값을 저장한다.

select 변수 in 값, 값1...

    do

       처리문

    done

 

반복문

for 문

지정된 값 안에서 루프 수행 각 값이 변수에 담기며 마지막 값까지 실행된다.

for 변수 in 값, 값1...

    do

       처리문

    done

while 문

조건이 참일 동안 do 이하의 문장 실행

while 조건문

    do

      처리문

    done

until 문

조건이 거짓일 동안만 루프 수행 while 과 반대

until 조건문

    do

      처리문

    done

함수

함수 이름()

{

      처리문

}

 

또는

 

function 함수이름

{

    처리문

}

저작자표시 비영리 변경금지 (새창열림)
    SEOYUL
    SEOYUL
    산호는 해양 생물의 4분의 1에게 집을 제공하는 만큼 생태계에서 중요한 근간이라고 합니다. 하지만 최근 환경 파괴로 산호지대가 사라지고 있어 여러 국가에서 산호를 심는 활동을 한다고 합니다. 이와같이 꾸준한 내용으로 미래를 위한 블로그를 만들어가고자 합니다.

    티스토리툴바