Shell Script 입문

8684 단어 script
Shell scripts 가 뭐 예요?
셸 script (프로그램 화 스 크 립 트) 은 무엇 입 니까?글자 상의 의미 에 대하 여 우 리 는 그 를 두 부분 으로 나 누 었 다."셸" 부분 에서 우 리 는 bash 에서 이미 말 했 습 니 다. 그것 은 문자 인터페이스 아래 에서 시스템 과 소통 할 수 있 는 도구 인터페이스 입 니 다.그럼 'script' 은 무엇 입 니까?글자 의 의미, script 은 '스 크 립 트, 대본' 이라는 뜻 입 니 다.한 마디 로 셸 script 은 셸 에 대한 '대본!' 입 니 다.
뭐 지?사실 셸 script 은 셸 의 기능 을 이용 하여 작성 한 '프로그램 (program)' 입 니 다. 이 프로그램 은 순수한 텍스트 파일 을 사용 하여 셸 의 문법 과 명령 (외부 명령 포함) 을 안에 쓰 고 정규 표현 법, 파이프라인 명령 과 데이터 흐름 가이드 등 기능 을 조합 하여 우리 가 원 하 는 처리 목적 을 달성 합 니 다.
 셸 script 은 배열, 리 턴, 조건 과 논리 적 판단 등 중요 한 기능 을 제공 하여 사용자 도 C 프로그램 언어 등 전통 적 인 프로그램 으로 작성 한 문법 을 사용 하지 않 아 도 됩 니 다!
 
첫 번 째 script 작성
무협 세계 에서 그 문 파 를 막론하고 무공 을 배 우려 면 땅 을 쓸 어 버 리 는 것 부터 시작 해 야 한다. 그러면 절 차 를 배 워 야 할 까?허허, 틀림없이 "Hello World 를 보 여 줘!" 라 는 글자 에서 시 작 된 거 야!OK!그럼 새 형 은 먼저 스 크 립 트 를 써 서 보 여 드 리 겠 습 니 다.
[root@www ~]# mkdir scripts; cd scripts

[root@www scripts]# vi sh01.sh

#!/bin/bash

# Program:

#       This program shows "Hello World!" in your screen.

# History:

# 2005/08/23    VBird    First release

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin

export PATH

echo -e "Hello World! \a 
" exit 0

이 장 에 서 는 작성 한 모든 script 을 집 디 렉 터 리 의 ~ / scripts 디 렉 터 리 에 배치 하 십시오. 미래 에 관리 하기 가 좋 습 니 다!위의 서법 에서 새 형 은 주로 전체 프로그램의 작성 을 몇 단락 으로 나 누 었 는데 대체적으로 이렇다.
  • 첫 줄 \ #! /빈 / bash 는 이 script 에서 사용 하 는 셸 이름 을 알 립 니 다. 우 리 는 bash 를 사용 하기 때문에 ' #!/bin/bash 』이 파일 에 있 는 문법 이 bash 문법 을 사용 한 다 는 것 을 알 립 니 다. 그러면 이 프로그램 이 실 행 될 때 bash 와 관련 된 환경 설정 파일 을 불 러 올 수 있 습 니 다.  non - login shell 의 ~ /. bashrc 다음 명령 을 실행 할 수 있 도록 bash 를 실행 하 는 것 이 중요 합 니 다! (많은 경우 이 줄 을 설정 하지 않 으 면 프로그램 이 실행 되 지 않 을 수 있 습 니 다. 시스템 이 어떤 셸 을 사용 해 야 하 는 지 판단 할 수 없 기 때 문 입 니 다!)
  • 프로그램 내용 에 대한 설명: 전체 script 에서 첫 번 째 줄 의 "\ #!" 을 제외 하고 셸 을 알 리 는 것 을 제외 하고 다른 \ # 는 "주석" 입 니 다.용도! 따라서 위의 프로그램 에서 두 번 째 줄 아래 는 전체 프로그램의 기본 데 이 터 를 설명 하 는 데 사 용 됩 니 다. 일반적으로 이 script 을 설명 하 는 것 을 기 르 는 것 을 권장 합 니 다. 1. 내용 과 기능, 2. 버 전 정보, 3. 작가 와 연락처, 4. 파일 작성 날짜, 5. 역사 기록 등. 이것 은 미래 프로그램의 개작 과 debug 에 도움 이 될 것 입 니 다!
  • 주요 환경 변수의 선언: 중요 한 환경 변 수 를 설정 하 는 것 을 권장 합 니 다. 새 형 은 개인 적 으로 PATH 와 LANG (출력 과 관련 된 정 보 를 사용 할 때) 가 가장 중요 하 다 고 생각 합 니 다. 그러면 우리 프로그램 이 진행 할 때 절대적 인 경 로 를 쓰 지 않 고 외부 명령 을 직접 내 릴 수 있 습 니 다. 좋 습 니 다!
  • 주요 프로그램 부분 은 주요 프로그램 을 잘 쓰 면 됩 니 다. 이 예 에서 echo 의 줄 입 니 다!
  • 실행 성과 알림 (전송 값 정의) 우리 가 명령 의 실행 성공 여 부 를 토론 한 것 을 기억 하 는 지, 사용 할 수 있 습 니 다. $? 이 변수 로 관찰 ~ 그러면 우 리 는 exit 라 는 명령 을 이용 하여 프로그램 을 중단 시 키 고 하나의 수 치 를 시스템 에 전달 할 수 있 습 니 다. 이 예 에서 새 형 은 exit 0 을 사용 합 니 다. 이것 은 script 을 떠 나 0 을 시스템 에 전달 하 는 것 을 의미 합 니 다. 그래서 제 가 이 script 을 실행 한 후에 echo $를 내 리 는 것 을 의미 합 니 다. 그러면 0 의 값 을 얻 을 수 있 습 니 다. 더 똑똑 한 독자 들 도 알 것 입 니 다. ㅎ! 이 exit n (n 은 숫자) 의 기능 을 이용 하여 우 리 는 잘못된 정 보 를 스스로 정 하여 이 프로그램 을 더욱 스마트 하 게 만 들 수 있 습 니 다!
  • 다음은 방금 위 에서 소개 한 운행 방법 을 통 해 결 과 를 보 겠 습 니 다!
    [root@www scripts]# sh sh01.sh
    
    Hello World !

    당신 은 스크린 이 이 렇 고 '쿵' 하 는 소리 도 들 을 수 있 을 것 입 니 다. 왜 일 까요? 앞 장 에서 언급 한 것 을 기억 합 니 다. printf 그 렇 죠? echo 로 특별한 버튼 을 눌 러 도 똑 같은 일이 일어 날 수 있 습 니 다 ~ 하지만 echo 는 - e 옵션 을 추가 해 야 합 니 다! 하하! 이 작은 script 을 다 쓴 후에 큰 소리 로 "나 도 프로그램 을 쓸 줄 알 아" 라 고 말 할 수 있 습 니 다! 하하! 간단 하고 재 미 있 죠 ~ ^
    또한, "chmod a + x sh01. sh;. / sh01. sh" 를 이용 하여 이 script 을 실행 할 수 있 습 니 다!
     
    script 의 실행 방식 차이 (source, sh script,. / script)
    직접 실행 하 는 방식 으로 script 을 실행 합 니 다.
    이전 소절 에서 언급 한 직접 명령 을 사용 하면 (절대 경로 / 상대 경로 든 $PATH 내 든) bash (또는 sh) 를 사용 합 니 다.스 크 립 트 를 내 릴 때, 이 스 크 립 트 는 새로운 bash 환경 을 사용 하여 스 크 립 트 내의 명령 을 실행 합 니 다. 즉, 사용자 가 실행 하 는 방식 을 가 질 때, 사실 스 크 립 트 는 서브루틴 의 bash 에서 실 행 됩 니 다. 부모 프로그램 / 서브루틴 의 개념 적 인 문제 들 은 다음 과 같 습 니 다."하위 프로그램 이 완료 되면 하위 프로그램 에 있 는 모든 변수 나 동작 이 끝 날 것 입 니 다. 부모 프로그램 으로 돌아 가지 않 습 니 다." 이것 은 무슨 뜻 입 니까?
    방금 말씀 드 린 sh02. sh 이 발 을 들 어 설명 하 였 습 니 다. 이 스 크 립 트 는 사용자 가 직접 두 개의 변 수 를 설정 할 수 있 습 니 다. 각각 firstname 과 lastname 입 니 다. 이 명령 을 실행 할 때 이 명령 이 설정 한 firstname 이 적용 되 는 지 생각해 보 세 요. 아래 의 실행 결 과 를 보 세 요.
    [root@www scripts]# echo $firstname $lastname
    
        <==   ,          !
    
    [root@www scripts]# sh sh02.sh
    
    Please input your first name: VBird <==            
    
    Please input your last name:  Tsai 
    
    
    
    Your full name is: VBird Tsai      <==  !  script    ,        
    
    [root@www scripts]# echo $firstname $lastname
    
        <==   ,           bash        !

    위의 결 과 는 이상 하 게 생각 할 것 입 니 다. 어떻게 내 가 sh02. sh 설정 한 변 수 를 bash 환경 에서 무효 로 만 들 었 는 지! 어떻게 된 일 입 니까? 프로그램 관련 성 을 그림 으로 그 렸 다 면 다음 그림 으로 설명 하 겠 습 니 다. 직접 실행 하 는 방법 으로 처리 할 때 시스템 은 새로운 bash 를 주 고 sh02. sh 안의 명령 을 실행 하 라 고 합 니 다. 왜냐하면...이것 은 당신 의 firstname, lastname 등 변 수 는 아래 그림 의 서브루틴 bash 에서 실 행 됩 니 다. sh02. sh 가 실 행 된 후 서브루틴 bash 의 모든 데 이 터 를 제거 합 니 다. 따라서 위의 표 연습 에서 부모 프로그램 아래 echo $firstname 에 서 는 아무것도 볼 수 없습니다. 이렇게 이해 할 수 있 습 니까?
    source 를 이용 하여 스 크 립 트 실행: 부모 프로그램 에서 실행
    source 를 사용 하여 명령 을 실행 하면 달라 집 니 다. 같은 스 크 립 트 를 실행 해 보 겠 습 니 다.
    [root@www scripts]# source sh02.sh
    
    Please input your first name: VBird
    
    Please input your last name:  Tsai
    
    
    
    Your full name is: VBird Tsai
    
    [root@www scripts]# echo $firstname $lastname
    
    VBird Tsai  <==  !      !

    유효 합 니 다! 맞습니다! source 는 script 의 실행 방식 에 대해 아래 그림 으로 설명 할 수 있 기 때 문 입 니 다! sh02. sh 는 부모 프로그램 에서 실 행 됩 니 다. 따라서 모든 동작 이 원래 bash 에서 유효 합 니 다! 이것 도 왜 시스템 을 로그아웃 하지 않 고 일부 기록 을 ~ /. bashrc 설정 이 유효 할 때 "source ~ /. bashrc" 를 사용 해 야 합 니까? 사용 할 수 없습니다."bash ~ /. bashrc" 는 똑 같 군요!
     
    셸 script 을 작성 하 는 좋 은 습관 생 성
    좋 은 습관 을 기 르 는 것 이 중요 합 니 다. 여러분 은 처음에 프로그램 을 작성 할 때 이 부분 을 가장 쉽게 무시 하고 프로그램 을 쓰 면 된다 고 생각 합 니 다. 다른 것 은 중요 하지 않 습 니 다. 사실 프로그램의 설명 이 더 명확 해 지면 자신 에 게 큰 도움 이 됩 니 다.
    예 를 들 어 새 형 은 자신의 수 요 를 위해 호스트 IP 의 검색, 로그 인 파일 분석 과 관리, 중요 한 설정 파일 을 자동 으로 업로드 하고 다운로드 하 는 등 많은 script 을 작 성 했 습 니 다. 그러나 초기 에는 너무 게 으 르 고 관리 하 는 호스트 가 너무 많아 서 같은 프로그램 이 서로 다른 호스트 에서 변경 되 었 습 니 다. 마지막 에어떤 것 이 최신 인지 기억 이 안 나 요. 그리고 중요 한 것 은 내 가 어디 를 고 쳤 는 지? 왜 그런 수정 을 했 는 지? 다 잊 어 버 렸 어 요 ~ 죽 을 지경 이에 요 ~
    그래서 나중에 새 형 은 프로그램 을 쓸 때 프로그램의 디자인 과정 을 자세히 기록 하고 역사 기록 도 기록 합 니 다. 그러면 제 가 어떤 데 이 터 를 수 정 했 는 지, 그리고 프로그램 이 수정 한 이념 과 논리 개념 등 을 쉽게 알 수 있 습 니 다. 유지 에 있어 서 훨씬 가 볍 습 니 다!
    또한 일부 환경의 설정 에 있어 서 모든 사람의 환경 이 다 르 기 때문에 좋 은 운영 환경 을 얻 기 위해 저 는 반드시 사용 할 환경 변 수 를 스스로 정의 할 것 입 니 다. 예 를 들 어 PATH 라 는 것 이 좋 습 니 다. 그 러 니 좋 은 script 작성 습관 을 기 르 고 모든 script 의 파일 에 기록 하 는 것 을 권장 합 니 다.
  • script 의 기능;
  • script 의 버 전 정보;
  • script 의 작성 자 와 연락처;
  • script 의 저작권 선고 방식;
  • script 의 History (역사 기록);
  • script 내 특수 한 명령 은 '절대 경로' 방식 으로 내 려 집 니 다.
  • script 이 실 행 될 때 필요 한 환경 변 수 를 미리 알 리 고 설정 합 니 다.
  • 이러한 정 보 를 기록 하 는 것 외 에 비교적 특수 한 프로그램 코드 부분 에서 개인 적 인 건의 에 주석 설명 을 더 하면 매우 많은 도움 을 줄 수 있 습 니 다!
     
    전환 하 다  http://vbird.dic.ksu.edu.tw/linux_basic/0340bashshell-scripts_1.php

    좋은 웹페이지 즐겨찾기