'프로그래밍'에 해당되는 글 1건

반응형

셸 스크립트 작성 방법


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

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

셸 프로그래밍 문법


주석

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

#!/bash/sh

# Auth : shyun

# 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 함수이름

{

    처리문

}


 

반응형
블로그 이미지

Runer

IT / 일상 / 먹방 / 꿀팁 / 유틸

,