셸 스 크 립 트 지식 을 분석 하 는 기호 편

6345 단어 linuxshell기호.
shell
Shell 은 일괄 처리(Batch)라 는 명령 을 수행 하 는 방식 도 있 습 니 다.사용 자 는 Shell 스 크 립 트(Script)를 미리 작성 합 니 다.그 중에서 여러 가지 명령 이 있 습 니 다.Shell 이 명령 을 한 번 에 다 수행 하도록 합 니 다.명령 을 한 번 에 두 드 리 지 않 아 도 됩 니 다.Shell 스 크 립 트 는 프로 그래 밍 언어 와 비슷 하고 순환 과 가 지 를 포함 한 변수 와 프로 세 스 제어 문 도 있 습 니 다.그러나 Shell 스 크 립 트 는 실행 을 설명 하 는 것 입 니 다.컴 파일 할 필요 가 없습니다.Shell 프로그램 은 스 크 립 트 의 한 줄 한 줄 에서 이 명령 을 읽 고 실행 합 니 다.한 사용자 가 스 크 립 트 의 명령 을 Shell 프롬프트 아래 두 드 려 서 실행 하 는 것 과 같 습 니 다.프로 그래 밍 언어 로 서 Linux 시스템 커 널 의 일부분 은 아니 지만 시스템 커 널 의 대부분 기능 을 호출 하여 프로그램 을 실행 하고 문 서 를 만 들 며 병행 하 는 방식 으로 각 프로그램의 운행 을 조율 합 니 다.
유 닉 스 시스템 에서 흔히 볼 수 있 는 셸 은sh,csh,ksh,tcsh,bash등 이 있다.
사용 명령:vim   /etc/shells  현재 시스템 이 지원 하 는 bash 를 볼 수 있 습 니 다.
  
셸 실행 스 크 립 트
셸 실행 스 크 립 트 는 해석 적 언어,대량 화 처리 언어 로 작업 비용 을 크게 절약 했다.
셸 스 크 립 트 의 첫 줄 은#!로 시작 해 야 합 니 다.이 스 크 립 트 는 뒤의 해석 기 를 사용 하여 실행 되 어야 합 니 다.
밤 을 들다

//script.sh   :        

#!/bin/bash
echo "this is a test"
ls
ls -l
echo "there are all files"
실행 방법:

//       :
[admin@localhost Shell]$ chmod +x script.sh
[admin@localhost Shell]$ ./script.sh
 
//       :
[admin@localhost Shell]$ /bin/bash script.sh
  
 
실행 과정:
Shell 은 하위 프로 세 스 를 fork 하고 exec 실행./script.sh프로그램 을 호출 합 니 다.exec 시스템 호출 은 하위 프로 세 스 의 코드 세그먼트 를./script.sh프로그램의 코드 세그먼트 로 바 꾸 고_start부터 실행 합 니 다.그러나script.sh은 텍스트 파일 로 코드 세그먼트 와_start함수 가 전혀 없 는데 어떻게 해 야 합 니까?사실exec또 다른 메커니즘 이 있 습 니 다.텍스트 파일 을 실행 하고 첫 줄 에 해석 기 를 지정 하면 해석 기 프로그램의 코드 세그먼트 로 현재 프로 세 스 를 교체 하고 해석 기_start부터 실행 합 니 다.이 텍스트 파일 은 명령 행 매개 변수 로 해석 기 에 전 달 됩 니 다.따라서 상기 스 크 립 트 를 실행 하 는 것 은 실행 프로그램 에 해당 합 니 다!
명령 을 입력 하여 셸 스 크 립 트 를 실행 한 후:
     1.대화 형 프로 세 스(부모 프로 세 스)는 스 크 립 트 를 실행 할 키 프로 세 스 를 만 들 고 부모 프로 세 스 는 하위 프로 세 스 가 종 료 될 때 까지 기 다 립 니 다.
     2.하위 프로 세 스 프로그램 교체 bash 해석 기
     3.셸 스 크 립 트 의 명령 을 읽 고 매개 변수 로 bash 해석 기 에 전달 합 니 다.
     4.하위 bash 는 셸 스 크 립 트 에 들 어 오 는 인 자 를 읽 고 한 줄 을 읽 어 명령 으로 인식 하면 하위 프로 세 스 를 만 듭 니 다.하위 bash 는 이 프로 세 스 가 종 료 될 때 까지 기 다 립 니 다.
     5.새 프로 세 스 가 이 명령 을 실행 하고 결 과 를 하위 프로 세 스에 전달 합 니 다.
     6.하위 프로 세 스 가 명령 을 계속 읽 고 새 프로 세 스 를 만 듭 니 다.새 프로 세 스 는 이 명령 을 실행 하고 마지막 명령 이 실 행 될 때 까지 결 과 를 하위 프로 세 스에 되 돌려 줍 니 다.
     7.하위 프로 세 스 종료,결 과 를 대화 형 부모 프로 세 스 로 되 돌려 줍 니 다.
메모:export,cd,env,set 같은 내 장 된 명령 은 명령 줄 을 입력 한 후 대화 식 프로 세 스 는 하위 프로 세 스 를 만 들 지 않 고 bash 내부 함수 로 명령 을 수행 합 니 다.대화 식 프로 세 스 를 바 꿉 니 다.
명령 행 에서 여러 명령 을 괄호 로 묶 고 분점 으로 나 누 어 실행 하면 대화 식 프로 세 스 는 괄호 에 있 는 명령 을 만 듭 니 다.

괄호 를 넣 지 않 으 면 다른 상황 입 니 다.cd .. 명령 은 대화 식 셸 에서 직접 실 행 됩 니 다.
. 또는source이 두 명령 은 Shell 의 내장 명령 입 니 다.이 방식 은 하위 Shell 을 만 들 지 않 고 대화 식 Shell 에서 스 크 립 트 의 명령 을 한 줄 씩 수행 합 니 다.
예증:

script.sh

#!/bin/bash
ls
echo "#################"
cd ..
ls



셸 변수
 셸 변 수 는 설명 이 필요 없 이 직접 정의 하면 됩 니 다.셸 변수의 값 은 실제 문자열 이기 때 문 입 니 다.(정의 되 지 않 은 변 수 는 기본적으로 빈 문자열 입 니 다.)정의 할 때 셸 변 수 는 대문자 와 밑줄 로 구성 되 고 정의 할 때 등호 양쪽 에 빈 칸 이 존재 하지 않 습 니 다.그렇지 않 으 면 명령 으로 여 겨 집 니 다!
셸 변수의 종류:
     1.환경 변수:셸 프로 세 스 의 환경 변 수 는 현재 셸 프로 세 스에 서 fork 에서 나 온 하위 프로 세 스에 전 달 될 수 있 습 니 다.
     2.로 컬 변수:현재 셸 프로 세 스에 만 존재 합 니 다.
printenv 를 이용 하여 현재 셸 프로 세 스 의 환경 변 수 를 표시 할 수 있 습 니 다.set명령 을 사용 하면 현재 셸 프로 세 스에 서 정 의 된 모든 변수(환경 변수 와 로 컬 변수 포함)와 함 수 를 표시 할 수 있 습 니 다.
셸 변 수 를 정의 한 후 현재 셸 프로 세 스에 만 존재 하 며 로 컬 변수 입 니 다.export명령 으로 로 컬 변 수 를 환경 변수 로 내 보 낼 수 있 습 니 다.unset명령 으로 정 의 된 환경 변수 나 로 컬 변 수 를 삭제 할 수 있 습 니 다.
예 를 들 면:

//         
COUNT=5
export COUNT
 
//             
export COUNT=5 
 
//           
unset COUNT
 변수 참조:
 셸 변 수 를 참조 하려 면$기 호 를 사용 하고{}를 추가 하면 잘못된 의 미 를 방지 할 수 있 습 니 다.
예 를 들 면:

COUNT=5
echo $COUNT
echo ${COUNT}911
  

어댑터 Globbing,명령 대체,작은 따옴표,작은 따옴표
1.흔 한 마스크:
     * : 0 개 이상 의 임의의 문자 일치
     ? : 임의의 문자 일치
     [몇몇 문자]:일치 하 는 괄호 의 임의의 문자 가 나타 납 니 다.
2.명령 대체:
따옴표``  혹은  $()script.sh :

셸 은 먼저 또는$()의 명령 을 실행 하고 결 과 를 현재 명령 줄 로 대체 합 니 다!
작은 따옴표 와$()의 차이 점:
    반 따옴표 자체 가\\에 대한 전 의 를 진행 하 였 으 며,그 자체 의 의 미 를 보류 하 였 으 며,만약 우리 가 반 따옴표 에서\\의 특수 한 의 미 를 가지 고 싶다 면,우 리 는 반드시 2 개의\를 사용 하여 표시 해 야 한다.
    따옴표 중: \\ = \    $()중:\ = \    주의:반 따옴표 는 오래된 용법 입 니 다.()새로운 용법 입 니 다.학습 테스트 에서 든 실제 업무 에서 든()새로운 용법 입 니 다.학습 테스트 에서 든 실제 업무 에서 든()의 용법 은 모두 추천 되 었 습 니 다.
산수 대체:$(())예 를 들 어 2-1 의 결 과 를 SUB 에 부여 하고 로 컬 변수 SUB 를 표시 합 니 다.

SUB=$((2-1))
echo $SUB
3.작은 따옴표 와 작은 따옴표
Shell 스 크 립 트 의 작은 따옴표 는 작은 따옴표 와 마찬가지 로 문자열 의 정의 문자 입 니 다.작은 따옴표 는 따옴표 에 있 는 모든 문자 의 글자 값 을 유지 하 는 데 사용 되 며,작은 따옴표 는 특별한 경우 가 있 습 니 다.문자열 에 특수 문자 가 있 으 면 더 블 따옴표 로 처리 합 니 다.
주:작은 따옴표 에 표 시 된 문자 에 작은 따옴표 가 더 이상 나타 날 수 없습니다.
밤 을 들다

#!/bin/bash
 
echo '\\'
echo "\\"
echo '`date`'
echo "`date`"

이상 은 셸 스 크 립 트 지식 에 관 한 기호 편의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 업무 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기