셸 스 크 립 트 지식 을 분석 하 는 기호 편
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`"
이상 은 셸 스 크 립 트 지식 에 관 한 기호 편의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 업무 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
용감한 바로 가기 및 우분투 응용 프로그램안녕하세요 여러분, 이 기사에서는 모든 사이트에서 pwa를 생성하고 실행기 응용 프로그램으로 추가하는 방법을 설명하고 싶습니다. 일부 웹사이트는 PWA로 설치를 허용하지 않지만 유사한 애플리케이션을 원합니다. 1. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.