리눅스 쉘(Shell) 스크립트] :: 서버구축[SSISO Community]
 
SSISO 카페 SSISO Source SSISO 구직 SSISO 쇼핑몰 SSISO 맛집
추천검색어 : JUnit   Log4j   ajax   spring   struts   struts-config.xml   Synchronized   책정보   Ajax 마스터하기   우측부분

서버구축
[1]
등록일:2018-09-12 20:02:28 (0%)
작성자:
제목:리눅스 쉘(Shell) 스크립트]

1. 쉘(Shell)스크립트란 ?

  • 쉘을 통하여 프로그램을 만든 것
  • DOS의 Batch 파일 작성과 비슷하지만 더 막강한 기능들을 가지고 있음
  • 기존의 명령어들을 이용하여 만들어지는 스크립트 파일의 문법은 다른 프로그래밍 언어보다 매우 간단하며 쉽게 응용이 가능

 

 

2. 쉘 스크립트의 시작

  • 쉘 프로그램을 만들기 위해서 vi에디터나 gedit 등을 이용
  • 스크립트 파일의 가장 위의 첫 라인은 "#! /bin/bash" 로 시작
  • bash로 작성되었다는 것을 의미하며, bash을 기준으로 실행된다는 것을 의미
  • Bourne Shell인 경우 "#! /bin/sh"

 

 

3. 쉘 스크립트의 실행

아래와 같이 echo 를 이용하여 화면에 "bash script test!!" 를 출력 할 수 있도록 스크립트 작성

 

아래와 같이 작성한 스크립트 파일에 실행 권한이 있는지 확인하고, 없으면 실행 권한을 추가하고 실행을 하면 작성한 메시지가 Display되는 것을 볼 수 있다.

 

 

4. 변수 사용

  • Shell에 있어 변수의 사용은 매우 간단히 정의
  • 변수명=값
  • 주의 할 것은 '=' 사이의 좌우 공백이 없어야 함
  • 대소문자 구별
  • 숫자형 변수와 문자형 변수의 구별이 없음
  • a=10
  • b="헬로우 리눅스"
  • 변수의 내용을 사용할 때는 변수명 앞에 '$'를 붙인다.

 

 

5. 숫자 계산을 위한 연산자

  • expr : 숫자 계산
  • + : 더하기
  • - : 빼기
  • * : 곱하기('\*'로 사용)
  • /: 나누기
  • %: 나누기를 한 수 나머지 값
  • 주의
    • expr로 지정하는 경우 역작은따옴표( ` )를 사용 : 작은 따옴표( ' )가 아님 !
    • 연산자 *와 괄호 앞에는 역슬래스(\)를 같이 사용
    • 연산자와 숫자, 변수, 기호 사이에는 space가 존재

Ex1)

결과)

 

Ex2)

retult=`expr \( 1 + 2 - 1 \) \* 2`

 

 

6. 사용자의 입력 받기

read를 사용하여 사용자의 입력을 변수에 받을 수 있다.

Ex)

Echo에 –n을 붙이면 줄넘김을 하지 않음

결과)

 

 

7. 조건문 (if, elif, else)

if로 시작해서 fi로 끝난다.

 

 

8. 숫자 비교

[$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가 다르다.

Ex)

 

 

9. 문자 비교

["string1" = "string2"] :    두 문자열이 같은 경우(== 도 가능)

["string1" ! "string2"] :    두 문자열이 다른 경우

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

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

 

 

10. 기타 조건

[-e "path"] :        path의 파일이나 디렉토리가 있는 경우

 

 

11. 관계 연산자

-a : and

-o : or

Ex)

 

 

12. for 문

  • 쉘 프로그램에서의 for 문은 일반적인 다른 프로그래밍 언어에서 사용되는 for 문의 형태와 다름
  • in 다음에 나오는 변수값을 순차적으로 변수에 대입하면서 반복 실행
  • 변수의 개수만큼 루프를 돌면서 do 다음의 문장을 실행하고 done으로 마무리

for 변수 in 변수값1 변수값2 변수값3 변수값4 …

do

    문장

done

Ex1) 숫자를 하나씩 출력

Ex2) ls 의 결과를 하나씩 출력

 

 

13. while 문

  • 조건문이 항상 참이라면, do와 done 사이의 문장이 무한 루프
  • ':' 기호와 1은 항상 참을 나타냄,
  • break, continue 사용 가능

 

while [ 조건문 ]

do

    문장…

done

Ex)

 

 

14. until 문

  • while 문과 같지만 반대로 동작
  • 거짓이면 루프를 돌고 참이면 루프를 종료
  • break, continue 사용 가능

until [ 조건문 ]

do

    문장…

done

 

 

15. case 문

변수 값을 받아들여서, 이 값에 맞는 문장을 실행

case 변수 in

패턴1)

    문장

    끝문장;;

패턴2)

    문장;;

     끝문장;;

*)

    문장

     끝문장;;

esac

Ex)

결과)

 

 

16. 함수

  • 함수는 불러주기 전에 선언되어야 함
  • C에서처럼 함수를 미리 선언하는 방법은 없음


16. 종료

  • exit : shell을 종료


17. Bash 주요 환경변수

Environment variable

의          미

 ENV .bashrc 파일에서 설정하며 함수와 별명 등을 설정하는 환경 파일의 이름을 설정
 EUID Shell이 시작할 때 현재 사용자의 유효 ID를 확장한다.
 HISTFILE 명령어 히스토리를 저장할 파일이름. 기본값은 ~/.bash_history이다.
 HOME 사용자의 홈 디렉토리의 값을 가지고 있으며 특정 디렉토리를 지정하지 않고 cd 명령을 사용할 때 이용한다.
 LANG LC_로 시작하는 변수들에 포함되지 않는 로케일을 설정
 PATH 명령어의 검색 경로, 콜론으로 구분한 디렉토리 목록
 PPID 부모프로세스의 PID
 PWD 현재 작업 디렉토리
 SHELL 현재 사용되어지고 있는 SHELL
 UID 현재 사용자의 UID
 OLDPWD 이전 작업 디렉토리 (이전 한개만 저장)



출처: http://gongdoo.tistory.com/241 [공처럼 둥글게]
[본문링크] 리눅스 쉘(Shell) 스크립트]
[1]
코멘트(이글의 트랙백 주소:/cafe/tb_receive.php?no=34831
작성자
비밀번호

 

SSISOCommunity

[이전]

Copyright byCopyright ⓒ2005, SSISO Community All Rights Reserved.