Shell 의 배열 및 작업 에 대한 상세 한 인 스 턴 스

8184 단어 shell배열정렬
Shell 에는 문자열,숫자 형식,배열 등 데이터 형식 이 많 지 않 습 니 다.배열 은 그 중에서 비교적 중요 한 것 이다.그 중요 한 응용 장면 은 배열 의 길이,요소 의 길 이 를 구 할 수 있 고 그 요소,요소 절편,교체,삭제 등 조작 을 옮 겨 다 니 며 사용 하기에 매우 편리 하 다.
Shell 의 배열 은 JAVA/C 와 달리 1 차원 배열 만 있 고 2 차원 배열 이 없습니다.배열 요소 의 크기 는 제약 이 없고 배열 의 요소 개 수 를 먼저 정의 할 필요 가 없습니다.그러나 색인 은 JAVA/C/python 과 같 습 니 다.0 부터 자주 사용 하 는 방식 으로 정리 하 겠 습 니 다.
[배열 설명]

비고:
1)JAVA/C 등 강력 한 프로 그래 밍 언어 가 아 닌 값 을 부여 하기 전에 반드시 밝 혀 야 합 니 다.SHELL 은 약 한 프로 그래 밍 언어 일 뿐 사전 성명 도 하지 않 을 수 있 습 니 다.
2)unset 로 배열 을 취소 하고 unset array 를 사용 할 수 있 습 니 다.name[i]안에 있 는 요 소 를 삭제 합 니 다.
[배열 정의]

비고:
1)배열 의 요 소 는 반드시'빈 칸'으로 분리 해 야 한다.이것 은 기본 적 인 요구 이다.
2)배열 의 색인 을 정의 할 수 있 습 니 다.예 를 들 어 names=([0]=Jerry[1]=Alice[2]=David[8]=Wendy);
3)문자열 은 SHELL 에서 가장 중요 한 데이터 형식 으로($str)을 통 해 배열 로 전환 할 수 있어 조작 하기에 매우 편리 합 니 다.
[배열 길이]

비고:
1)사용${arrayname[@]}또는${arrayname[*]}배열 의 요 소 를 모두 표시 할 수 있 습 니 다.
2)같은 이치${\#arrayname[@]}또는${\#arrayname[*]}은 배열 의 길 이 를 구 하 는 데 사용 할 수 있 습 니 다.
3)배열 에 있 는 요소 의 길 이 를 구 하 는 방법 은 매우 많 으 며 문자열 의 길 이 를 구 하 는 것 과 같다.
[배열 색인]

[root@locathost ~]# s="A,B,C,D"
[root@locathost ~]# a=(`echo $s | tr ',' ' '`)  #          
[root@locathost ~]# echo ${!a[@]}        #         
0 1 2 3
【원소 삭제】 

[root@localhost ~]# a=(A B C D)
[root@localhost ~]# unset a[2]     #      2   
[root@localhost ~]# echo ${a[@]}    #         
A B D
[배열 옮 겨 다 니 기]

스 크 립 트 출력:

비고:
1)표준 for 순환 을 사용 할 수 있 습 니 다.이러한 C 언어 방식 으로 배열 의 요 소 를 옮 겨 다 닐 수 있 습 니 다.
2)for 요소 in 요소 집합(배열)과 같은 파 이 썬 방식 으로 배열 을 옮 겨 다 닙 니 다.
3)코드 가 독성 과 실행 속 도 를 볼 때 두 번 째 방식 을 추천 합 니 다.
【배열 할당】

비고:
1)첫 번 째 는 이미 존재 하 는 요소 항목 에 값 을 다시 부여 하 는 것 이다.
2)물론 존재 하지 않 는 색인 에 할당 을 추가 할 수도 있 습 니 다.아래 의 예 를 볼 수 있 습 니 다.
[배열 추가]

[배열 절편]
배열 절편

원소 절편

비고:
1)일반적인 형식${array[@]:시작 위치:길이},중간 은":"로 구분 되 며,두 번 째 항목 이 생략 되면 뒤의 모든 항목 을 가 져 옵 니 다.
2)슬라이스 후 되 돌아 오 는 것 은 문자열 입 니 다.새 배열=(${오래된 배열[@]:색인:길이})을 통 해 색인 할 수 있 습 니 다.위의 마지막 예 를 참조 하 십시오.
3)Python 중 하나 와 구별:시작 위 치 는 음수 일 수 있 지만()에 놓 아야 합 니 다.길 이 는 음수 일 수 없습니다.
4)Python 의 두 번 째 와 구별:두 번 째 항목 은 Python 에서 끝 색인 이 고 Shell 에 서 는 원소 의 길 이 를 나타 낸다.
5)파 이 썬 의 3 과 구별:파 이 썬 은 list[-1:-4:-2]를 통 해 역방향 으로 수 를 취 할 수 있 으 며,Shell 에 서 는 실현 할 수 없다.
[배열 교체]
${array[@]/x/y}     최소 일치 교체,각 요 소 는 한 번 만 교체 합 니 다.
${array[@]//x/y}    최대 일치 교체,각 요 소 를 여러 번 교체 할 수 있 습 니 다.
${array[@]/x/}      최소 일치 삭제,규정 에 맞 는 요소 만 삭제
${array[@]//x/}     최대 일치 삭제,규정 에 맞 는 여러 요 소 를 삭제 할 수 있 습 니 다.

${array[@]/#x/y}     왼쪽 에서 오른쪽으로 일치 하 는 대체 요소 의 맨 왼쪽 문자 만 바 꿉 니 다.
${array[@]/%x/y}     오른쪽 에서 왼쪽으로 일치 하 는 대체 요소 의 맨 오른쪽 문자 만 바 꿉 니 다.

【배열 삭제】
#  각 요 소 는 왼쪽 에서 오른쪽으로 최 단 일치 합 니 다.
\#\#모든 요 소 는 왼쪽 에서 오른쪽으로 최 장 일치 합 니 다.
%  각 요 소 는 오른쪽 에서 왼쪽으로 최 단 일치 합 니 다.
%%원소 당 오른쪽 에서 왼쪽으로 최 장 일치

[배열 응용]
예제 1:ifconfig 명령 을 가 져 온 로 컬 IP:127.0.0.1 줄 마다 표시

스 크 립 트 출력:

예제 2:스 택 의 push,pop,shift,unshift 작업 을 모 의 합 니 다.

스 크 립 트 출력:

예제 3:1-10 사이 에 반복 되 지 않 는 10 개의 수 를 무 작위 로 생 성하 여 배열 에 배치 합 니 다.

스 크 립 트 출력:

비고:
1) [1,10]범위 내 에서 중복 되 지 않 는 무 작위 정 수 를 생 성하 여 배열 array 에 저장 합 니 다.
2)seq 1 10 은 1~10 의 정수 서열 을 생 성 하 는 데 사용 된다(경계 값 1 과 10 포함)
3)awk 의 rand()함 수 는 0 에서 1 사이 의 작은 수 치 를 무 작위 로 만 드 는 데 사 용 됩 니 다(소수점 후 6 자리 유지).
4)rand()는 한 번 의 난수 만 생 성 합 니 다.srand()함 수 를 사용 하여 난수 스크롤 을 생 성 합 니 다.
5) 괄호 안에 비어 있 는 것 은 현재 시간 을 랜 덤 카운터 의 피 드 로 사용 하 는 것 입 니 다.이렇게 초 간격 으로 랜 덤 수 를 굴 려 서 랜 덤 으로 생 성 할 수 있 습 니 다.
6) 초 간격 으로 두 번 연속 스 크 립 트(1s 내)를 빠르게 실행 하면 생 성 된 난수 가 똑 같 음 을 발견 할 수 있 습 니 다.
예제 4:문자열 을 처리 한 후 배열 로 바 꾸 고 출력 합 니 다.

스 크 립 트 출력:

예제 5:read-a 매개 변수 로 표준 입력 에서 배열 을 읽 고 조작 합 니 다.

스 크 립 트 출력:

예시 6:  어떤 변수 가 배열 에 있 는 지,출력 YES 에 있 는 지,출력 NO 에 있 는 지 판단 합 니 다.

스 크 립 트 출력:

예시 7:  배열 의 요 소 를 정렬 합 니 다.

예시 8:  /etc/passwd 파일 의 첫 번 째 열,즉 사용자 이름 을 배열 에 배치 합 니 다.

예시 9:  1-8,각 수 를 곱 한 후 출력 합 니 다.

스 크 립 트 출력:

예시 10:  SHELLS 의 환경 변 수 를 배열 로 설정 합 니 다.

예시 11:  IFS 설정,파일 내용 예제 읽 기

예시 12:  eval 을 이용 하여 배열 의 기능 을 모 의 실현 합 니 다.

스 크 립 트 출력:

예시 13:  배열 을 이용 하여 거품 정렬 을 실현 하 다.
사고:정렬 할 배열 을 반복 적 으로 방문 하고 한 번 에 두 가지 요 소 를 비교 하 며 그들의 순서 가 틀 리 면 그들 을 교환 합 니 다.방문 수열 작업 은 더 이상 교환 이 필요 하지 않 을 때 까지 반복 적 으로 진행 된다.즉,이 수열 은 이미 정렬 이 완료 되 었 다 는 것 이다.큰 요 소 는 교환 을 통 해 수열 의 맨 위로 천천히 떠 오른다.

스 크 립 트 출력:

예시 14:  배열 을 이용 하여 최대 치 를 구하 다.

스 크 립 트 출력

총결산
여기 서 Shell 의 배열 과 그 조작 에 관 한 글 은 여기까지 소개 되 었 습 니 다.더 많은 Shell 배열 의 조작 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기