Shell Script 입문
8684 단어 script
셸 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 디 렉 터 리 에 배치 하 십시오. 미래 에 관리 하기 가 좋 습 니 다!위의 서법 에서 새 형 은 주로 전체 프로그램의 작성 을 몇 단락 으로 나 누 었 는데 대체적으로 이렇다.
[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 의 파일 에 기록 하 는 것 을 권장 합 니 다.
전환 하 다 http://vbird.dic.ksu.edu.tw/linux_basic/0340bashshell-scripts_1.php
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ActiveDirectory에 PowerShell로 사용자 일괄 등록사용자 계정 정보가 포함 된 CSV 파일을 준비하고 Active Directory에 일괄 등록하는 스크립트를 만듭니다. 1 행째를 헤더로 한 다음과 같은 CSV 파일을 입력 가능하고 임의로 열을 추가할 수 있다고 한...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.