Shell 스 크 립 트 언어 -- markdown 노트
셸 스 크 립 트 언어
1. 셸 스 크 립 트 언어 는 무엇 입 니까?
스 크 립 트 언어 는 대본 처럼 컴퓨터 에 어떤 일 을 가 르 치 는 언어 다.
스 크 립 트 언어 는 사실 컴퓨터 가 일련의 작업 을 자동화 하 는 데 사용 되 는 짧 은 프로그램 입 니 다. 이런 프로그램 은 텍스트 편집기 로 수정 할 수 있 습 니 다.
컴 파일 할 필요 가 없습니다. 일반적으로 실행 을 설명 합 니 다.
2. 셸 스 크 립 트 를 실행 하 는 두 가지 방법
chmod +x ./XXX.sh chmod
./XXX.sh
/bin/sh XXX.sh
3. 셸 변수
변 수 를 정의 할 때 변 수 는 $를 추가 하지 않 습 니 다. 예 를 들 어:
your_name="runoob.com"
정 의 된 변 수 를 사용 할 때 변수 이름 앞 에 $기 호 를 추가 하면 됩 니 다. 예 를 들 어:
your_name="qinjx"
echo ${your_name}
읽 기 전용 변수
readonly myUrl
myUrl="www.baidu.com"
변수 삭제
unset myUrl
변수 형식
1. 부분 변수: 부분 변 수 는 스 크 립 트 나 명령 에서 정의 되 고 현재 셸 인 스 턴 스 에서 만 유효 하 며 다른 셸 시작 프로그램 은 변 수 를 방문 할 수 없습니다.
2. 환경 변수: 모든 프로그램 은 셸 이 시작 하 는 프로그램 을 포함 하여 환경 변 수 를 방문 할 수 있 고 일부 프로그램 은 환경 변 수 를 통 해 정상 적 인 운행 을 확보 해 야 합 니 다.필요 할 때 셸 스 크 립 트 도 환경 변 수 를 정의 할 수 있 습 니 다.
3. 셸 변수: 셸 변 수 는 셸 프로그램 에서 설정 한 특수 변수 입 니 다. 셸 변수 중 일 부 는 환경 변수 이 고 일 부 는 부분 변수 입 니 다. 이런 변 수 는 셸 의 정상 적 인 운행 을 보장 합 니 다.
4. 셸 문자열
문자열 은 작은 따옴표 도 사용 할 수 있 고 작은 따옴표 도 사용 하지 않 을 수 있 습 니 다.
따옴표 사용 을 강력 히 권장 합 니 다.
문자열 길이 가 져 오기
string="adcg"
echo ${#string}
하나 더
추출 문자열
string="runoob is a great site"
scho ${string 1:4} uoo , 0
5. 셸 배열
셸 은 1 차원 배열 만 지원 합 니 다.
정의 배열
괄호 로 배열 을 표시 하고 배열 요 소 는 '빈 칸' 기호 로 나 누 어 배열 의 일반적인 형식 을 정의 합 니 다.
array_name=(value0 value1 value2 value3)
읽 기 배열
valuen=${array_name[1]}
@ 기 호 를 사용 하면 배열 의 모든 요 소 를 가 져 올 수 있 습 니 다. 예 를 들 어:
echo ${array_name[@]}
배열 요소 의 개 수 를 가 져 옵 니 다.
length=${#array_name[@]
배열 단일 요소 의 길 이 를 가 져 옵 니 다.
length=${#array_name[1]}
6. 셸 전달 매개 변수
스 크 립 트 에서 파 라 메 터 를 가 져 오 는 형식 은 0 대표 파일 이름, $1 대표 파라미터 1, $2 대표 파라미터 2 입 니 다.
존재 하지 않 는 인 자 를 출력 할 때 결과 가 비어 있 습 니 다.
기본 연산 자 결과 false 나 true 를 문자열 로 변수 에 할당 할 수 없습니다.
사 칙 연산 을 할 때 = 양쪽 은 빈 칸 을 쓰 지 않 고 + 양쪽 은 반드시 빈 칸 을 써 야 하 며, 사 칙 연산 은 반드시 쌍 괄호 를 써 야 한다. 예 를 들 어
num=(($num+1))
산수 연산 자
형식: expr ` a + b '
관계 연산 자
관계 연산 자 는 문자열 의 값 이 숫자 가 아 닌 숫자 만 지원 합 니 다.
가정 a = 10, b = 20
연산 자
설명 하 다.
예 를 들다
-eq
두 개의 수가 같은 지 확인 하고, 같은 값 으로 true 로 돌아 갑 니 다.
[$a - eq $b] false 되 돌리 기
-ne
두 개의 수가 같은 지 확인 하고, 같 지 않 으 면 true 로 돌아 갑 니 다.
[$a - ne $b] true
-gt
왼쪽 의 수가 오른쪽 보다 큰 지 확인 합 니 다. 만약 그렇다면 true 로 돌아 갑 니 다.
[$a - gt $b] false 되 돌리 기
-lt
왼쪽 의 수가 오른쪽 보다 작은 지 확인 합 니 다. 그렇다면 트 루 로 돌아 갑 니 다.
[$a - gt $b] true 로 돌아 가기
-ge
왼쪽 의 수가 오른쪽 보다 큰 지 확인 하고, 만약 그렇다면 true 로 돌아 갑 니 다.
[b] false 로 돌아 갑 니 다.
-le
왼쪽 의 수가 오른쪽 보다 작은 지 확인 하고, 그렇다면 트 루 로 돌아 갑 니 다.
[b] 트 루 로 돌아 가기.
불 연산 자
& & 연산
| | 또는 연산
문자열 연산 자
연산 자
설명 하 다.
예 를 들다
=
두 문자열 이 같은 지 확인 하고 트 루 로 돌아 갑 니 다.
[b] false 로 돌아 갑 니 다.
!=
두 문자열 이 같은 지 확인 하고 트 루 로 돌아 갑 니 다.
[b] 트 루 로 돌아 가기.
-z
문자열 길이 가 0 인지, 0 인지 true 로 되 돌아 갑 니 다.
[- z $a] false 로 돌아 갑 니 다.
-n
문자열 길이 가 0 인지, 0 이 아 닌 true 를 되 돌려 줍 니 다.
[- n $a] 트 루 로 돌아 갑 니 다.
str
문자열 이 비어 있 는 지, 비어 있 는 지 true 로 돌아 가지 않 습 니 다.
[$a] 트 루 로 돌아 갑 니 다.
파일 테스트 연산 자
연산 자
설명 하 다.
예 를 들다
-s file
파일 이 비어 있 는 지 확인 합 니 다 (파일 크기 가 0 이상 인지). 비어 있 는 지 true 로 돌아 가지 않 습 니 다.
[- s $file] true 로 돌아 갑 니 다.
-e file
파일 (디 렉 터 리 포함) 이 존재 하 는 지 확인 하고 트 루 로 돌아 갑 니 다.
[- e $file] true 를 되 돌려 줍 니 다.
8. 셸 프로 세 스 제어
if 구문
if 구문
if ····
then
·····
·····
fi
if else 문장
if ····
then
····
····
else
····
fi
if else-if else
if ·····
then
······
elif ·····
then
·····
else
·····
fi
for 순환
for 순환 형식:
for var in items items2 item3 .... itemsN
do
command1
command2
··
commandN
done
while 구문
while 순환 은 일련의 명령 을 계속 실행 하 는 데 사 용 됩 니 다. 입력 파일 에서 데 이 터 를 읽 는 데 도 사 용 됩 니 다. 명령 은 보통 테스트 조건 입 니 다. 그 형식 은 다음 과 같 습 니 다.
while condition
do
command
done
while condition 이 사 칙 연산 과 관련 이 있다 면, 쌍 괄호 를 사용 해 야 합 니 다.
작은 따옴표 ('): 묶 은 문 자 를 일반 문자 로 합 니 다.
두 따옴표 ("): 괄호 로 묶 은 문 자 는" $"," \ "," "와" "" 를 제외 하고 그 특수 기능 을 유지 하 는 것 을 제외 하고 나머지 는 여전히 일반 문자 로 한다.
반 따옴표 (`): 묶 인 문자열 은 명령 으로 해석 되 며, 셸 은 먼저 이 명령 을 실행 하고, 그의 표준 출력 결과 예 를 들 수 있 습 니 다.
9. 셸 함수
무 참 함수
셸 에서 함수 의 정의 형식 은 다음 과 같 습 니 다.
[ function ] funname [()]
{
action;
[return int;]
}
#!/bin/bash
demoFun(){
echo " shell !"
}
echo "----- -----"
demoFun
echo "----- -----"
#!/bin/bash
funWithReturn(){
echo " ..."
echo " : "
read aNum
echo " : "
read anotherNum
echo " $aNum $anotherNum !"
return $(($aNum+$anotherNum))
}
funWithReturn
echo " $? !"
셸 에서 함 수 를 호출 할 때 파 라 메 터 를 전달 할 수 있 습 니 다. 함수 내부 에서 1 을 통 해 첫 번 째 파 라 메 터 를 표시 합 니 다.
#!/bin/bash
funWithParam(){
echo " $1 !"
echo " $2 !"
echo " $10 !"
echo " ${10} !"
echo " ${11} !"
echo " $# !"
echo " $* !"
}
funWithParam 1 2 3 4 5 6 7 8 9 34 73
설명 하 다.
$#
스 크 립 트 에 전 달 된 매개 변수 개수
$*
스 크 립 트 에 전 달 된 모든 인 자 를 단일 문자열 로 표시 합 니 다.
$$
스 크 립 트 가 실행 중인 현재 프로 세 스 ID 번호
$!
백그라운드 에서 실행 중인 마지막 프로 세 스 의 ID 번호
$@
$* 와 같 지만 사용 할 때 따옴표 를 추가 하고 따옴표 에서 매개 변 수 를 되 돌려 줍 니 다.
$-
셸 이 사용 하 는 현재 옵션 을 보 여 줍 니 다. set 명령 기능 과 같 습 니 다.
$?
마지막 명령 의 종료 상 태 를 표시 합 니 다.0 은 오류 가 없 음 을 나타 내 고 다른 값 은 오류 가 있 음 을 나타 낸다.
10. 셸 파일 포함
다른 언어 와 마찬가지 로 셸 도 외부 스 크 립 트 를 포함 할 수 있 습 니 다. 그러면 공용 코드 를 독립 파일 로 편리 하 게 밀봉 할 수 있 습 니 다.
문법 은 다음 과 같다.
. filename # (.)
source filename
예:
test1.sh
#!/bin/bash
url="http://www.runoob.com"
test2.sh
#!/bin/bash
# . test1.sh
. ./test1.sh
#
# source ./test1.sh
echo " :$url"
결 과 는:
$ chmod +x test2.sh
$ ./test2.sh
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.