Shell 학습 의 길-(03-변수,문자열,배열)
9084 단어 Shell
1.변수
1.1 일반 변수
변수 이름 의 이름 은 다음 과 같은 규칙 을 따라 야 합 니 다.
변 수 를 정의 할 때 변 수 는 달러 기호($)를 추가 하지 않 습 니 다.예 를 들 어:
variableName="value"
정 의 된 변 수 를 사용 합 니 다.변수 이름 앞 에 달러 기호($)를 추가 하면 됩 니 다.{}추가 할 수 있 습 니 다.예 를 들 어:
your_name="mozhiyan"
echo $your_name
echo ${your_name}
정 의 된 변 수 는 다음 과 같이 다시 정의 할 수 있 습 니 다.
myUrl="http://see.xidian.edu.cn/cpp/linux/"
echo ${myUrl}
myUrl="http://see.xidian.edu.cn/cpp/shell/"
echo ${myUrl}
readonly 명령 을 사용 하면 변 수 를 읽 기 전용 변수 로 정의 할 수 있 으 며,읽 기 전용 변수의 값 은 변경 할 수 없습니다.
다음 의 예 는 읽 기 전용 변 수 를 변경 하려 고 시도 하 였 으 나 결 과 는 잘못 되 었 습 니 다.
#!/bin/bash
myUrl="http://see.xidian.edu.cn/cpp/shell/"
readonly myUrl
myUrl="http://see.xidian.edu.cn/cpp/danpianji/"
스 크 립 트 를 실행 합 니 다.결 과 는 다음 과 같 습 니 다.
/bin/sh: NAME: This variable is read only.
unset 명령 을 사용 하면 변 수 를 삭제 할 수 있 습 니 다.문법:
unset variable_name
변수 가 삭 제 된 후 다시 사용 할 수 없습니다.unset 명령 은 읽 기 전용 변 수 를 삭제 할 수 없습니다.
예 를 들 어:
#!/bin/sh
myUrl="http://see.xidian.edu.cn/cpp/u/xitong/"
unset myUrl
echo $myUrl
위의 스 크 립 트 는 출력 이 없습니다.
1.2 특수 변수
변량
속뜻
$0
현재 스 크 립 트 의 파일 이름
$n
스 크 립 트 나 함수 에 전달 되 는 인자 입 니 다.
$#
스 크 립 트 나 함수 에 전달 되 는 매개 변수 갯 수 입 니 다.
$*
스 크 립 트 나 함수 에 전달 되 는 모든 인자 입 니 다.
$@
스 크 립 트 나 함수 에 전달 되 는 모든 인자 입 니 다.
$?
이전 명령 의 종료 상태 나 함수 의 반환 값 입 니 다.
$$
현재 Shell 프로 세 스 ID 입 니 다.셸 스 크 립 트 에 대해 서 는 이 스 크 립 트 가 있 는 프로 세 스 ID 입 니 다.
예:
#!/bin/bash
echo "File Name: $0"
echo "First Parameter : $1"
echo "First Parameter : $2"
echo "Quoted Values: $@"
echo "Quoted Values: $*"
echo "Total Number of Parameters : $#"
실행 결과:
$./test.sh Zara Ali
File Name : ./test.sh
First Parameter : Zara
Second Parameter : Ali
Quoted Values: Zara Ali
Quoted Values: Zara Ali
Total Number of Parameters : 2
∗와@의 차이
*8727,@은 함수 나 스 크 립 트 에 전 달 된 모든 인 자 를 표시 합 니 다.작은 따옴표(")에 포함 되 지 않 을 때"1","2","$n"형식 으로 모든 인 자 를 출력 합 니 다.
그러나 따옴표(")에 포 함 될 때"8727°"모든 매개 변 수 를 하나의 전체 로 하고"12...n"형식 으로 모든 매개 변 수 를 출력 합 니 다."@"모든 인 자 를'1','2','n'으로 나 누 어 출력 합 니 다.
2.문자열
문자열 은 셸 프로 그래 밍 에서 가장 자주 사용 되 는 데이터 형식(숫자 와 문자열 을 제외 하고 다른 유형 도 사용 할 수 없습니다)입 니 다.문자열 은 작은 따옴표 도 사용 할 수 있 고 작은 따옴표 도 사용 할 수 있 으 며 따옴표 도 사용 하지 않 아 도 됩 니 다.작은 따옴표 의 차 이 는 PHP 와 유사 하 다.
2.1 작은 따옴표
예:
str='this is a string'
2.2 따옴표
예 1:
your_name='qinjx'
str="Hello, I know your are \"$your_name\"!
"
예 2:
your_name="qinjx"
greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"
echo $greeting $greeting_1
2.3 문자열 길이 가 져 오기
길이 가 져 오기 및 위의 특수 변 수 를 통 해$\#변 경 된 것 입 니 다.
string="abcd"
echo ${#string}
2.4 하위 문자열 추출
예 1.1-4,세 개의 문자열 을 캡 처 하고 두 가지 방식 의 시작 위치 계산 방식 이 다 릅 니 다.하 나 는 0 에서 시작 하고 하 나 는 1 에서 시작 합 니 다.
string="alibaba is a great company"
echo ${string:1:4}
echo `expr substr "$string" 2 4`
예 2,1 뒤의 모든 문 자 를 캡 처 합 니 다.
echo ${string:1}
2.5 하위 문자열 찾기
이니셜 이 있 는 위 치 를 찾 습 니 다.예:
string="alibaba is a great company"
echo `expr index "$string" is`
echo `expr index "$string" llll`
echo `expr index "$string" bjhjkhjkhj`
echo `expr index "$string" gg`
결과:
3
2
4
14
이 함 수 는 첫 번 째 자모 가 처음 나타 난 위치 만 검출 한 다 는 것 을 알 수 있다.
3.배열
bash 는 1 차원 배열(다 차원 배열 은 지원 되 지 않 음)을 지원 하고 배열 의 크기 를 제한 하지 않 습 니 다.C 언어 와 유사 하 며,배열 요소 의 아래 표 시 는 0 부터 번 호 를 매 긴 다.배열 의 요 소 를 가 져 오 려 면 아래 표 시 를 이용 해 야 합 니 다.아래 표 시 는 정수 나 산술 표현 식 일 수 있 습 니 다.그 값 은 0 보다 크 거나 같 아야 합 니 다.
3.1 정의 배열
셸 에 서 는 괄호 로 배열 을 표시 하고 배열 요 소 는'빈 칸'기호 로 나 뉜 다.
배열 을 정의 하 는 일반적인 형식 은
array_name=(value1 ... valuen)
예 를 들 어:array_name=(value0 value1 value2 value3)
array_name=(
value0
value1
value2
value3
)
배열 의 각 분량 을 따로 정의 할 수 있 습 니 다.
array_name[0]=value0
array_name[1]=value1
array_name[2]=value2
연속 적 인 하 표를 사용 하지 않 아 도 되 고 하 표 의 범 위 는 제한 이 없다.
3.2 읽 기 배열
배열 요소 값 을 읽 는 일반적인 형식 은
${array_name[index]}
예 를 들 어:valuen=${array_name[2]}
예 를 들 어:
#!/bin/sh
NAME[0]="Zara"
NAME[1]="Qadir"
NAME[2]="Mahnaz"
NAME[3]="Ayan"
NAME[4]="Daisy"
echo "First Index: ${NAME[0]}"
echo "Second Index: ${NAME[1]}"
스 크 립 트 실행,출력:
$./test.sh
First Index: Zara
Second Index: Qadir
@또는*를 사용 하면 배열 의 모든 요 소 를 가 져 올 수 있 습 니 다.예 를 들 어:
${array_name[*]}
${array_name[@]}
예 를 들 어:
#!/bin/sh
NAME[0]="Zara"
NAME[1]="Qadir"
NAME[2]="Mahnaz"
NAME[3]="Ayan"
NAME[4]="Daisy"
echo "First Method: ${NAME[*]}"
echo "Second Method: ${NAME[@]}"
스 크 립 트 실행,출력:
$./test.sh
First Method: Zara Qadir Mahnaz Ayan Daisy
Second Method: Zara Qadir Mahnaz Ayan Daisy
3.3 배열 의 길 이 를 가 져 옵 니 다.
배열 길 이 를 가 져 오 는 방법 은 문자열 길 이 를 가 져 오 는 방법 과 같 습 니 다.예 를 들 어:
length=${#array_name[@]}
또는 length=${#array_name[*]}
lengthn=${#array_name[n]}
주의:상기 내용 은 C 언어 중국어 망 및 본인 이 사용 하 는 과정 에 대한 이해 와 정리 에서 나 온 것 입 니 다.만약 권리 침해 가 있 으 면 제때에 저 에 게 알려 주 십시오.저 는 즉시 삭제 할 것 입 니 다.잘못된 점 이 있 으 면 지적 하고 토론 하 겠 습 니 다.글 은 안내 역할 을 할 뿐 상세 한 데이터 분석 내용 은 Shell 관련 튜 토리 얼 도 보 세 요.찾 아 봐 주 셔 서 감사합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Shell alias 명령에 별칭을 설정하는 방법명령에 별명을 설정하면 명령의'작은 이름'으로 삼을 수 있지만, 이렇게 하는 것이 무슨 의미가 있습니까? 이때 별명이 작용할 수 있다.vim 명령의 별명을vi라고 정의하면 이후에 실행된vi 명령은 실제로vim 명령을...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.