Linux에 대한 Bash 사전은 무엇이며 어떻게 사용합니까?

Jun 16, 2025
리눅스
[삼]
Fatmawati Achmad Zaenuri / Shutterstock.com

Bash Dictionaries는 Linux 쉘 스크립트에서 해시 맵 및 연관 배열을 제공합니다. 우리는 자신의 Linux 쉘 스크립트에서 이러한 강력하고 유용한 데이터 구조를 사용하는 방법을 보여줍니다.

다른 이름으로 장미

사전의 정식 이름은 연관 배열입니다. 해시 테이블과 해시지도라고도합니다. 그것들은 일반적인 배열과 유사하게 작동하는 데이터 구조이지만 중요한 차이가 있습니다.

배열은 하나의 데이터 구조로 보유 된 데이터 값 모음입니다. 배열 요소로 알려진 데이터 값을 액세스하려면 배열에서 위치를 알아야합니다. 어레이의 배열 요소의 위치는 인덱스라고합니다. 따라서 이러한 유형의 배열을 인덱스 된 배열이라고합니다. 가장 일반적으로 사용되는 배열 유형입니다.

그러나, 그들은 단점이 있습니다. 목록 내에서 위치를 모르는 경우 배열 요소에 어떻게 액세스합니까? 배열의 모든 요소를 ​​모두 실행하여 테스트하여 해당 위치의 값이 찾고있는 값을 확인해야합니다.

연관 배열은 그 문제를 극복합니다. 정수를 사용하여 배열 요소를 고유하게 식별 할 수 없습니다. 그들은 키워드로 알려진 독특한 단어를 사용합니다. 배열 내에 위치한 위치와 상관없이 키워드를 사용하여 배열 요소의 값을 검색 할 수 있습니다. 인덱싱 된 배열을 사용하면 배열 내의 위치를 ​​나타내는 정수 숫자가 오름차순입니다. 연관 배열의 키워드는 어떠한 순서대로 일 수 있습니다.

키워드를 검색하여 연관 배열에서 값을 찾을 수 있습니다. 단어를 찾고 연관된 가치를 검색하고 사전에서 한 단어를 찾고 그 의미를 찾는 것을 찾는 것입니다. 그래서 연관 배열이 사전이라고합니다.

Bash 4.0 이상

연관 배열이 지원됩니다 Bash Shell. 버전 4.0 이상. 현재 Linux 배포판을 사용하는 경우 괜찮을 것입니다. Bash 버전을 확인하려면 다음 명령을 사용하십시오.

 BASH 기타 

이 기사를 연구하는 데 사용되는 기계는 Bash 5.1.4가 설치되어 있으므로 우리는 가야 할 것입니다.

기본 원리들

터미널 명령 줄이나 스크립트에서 연관 배열을 만들려면 Bash Declare 명령을 사용합니다. NS -NS (연관성) 옵션은 Bash를 알려줍니다. 이렇게하면 인덱싱 된 배열이 아닌 연관 배열이 아닙니다.

 Declare -a 약어 

이것은 "약어"라는 연관 배열을 만듭니다.

일부 데이터를 배열에 넣으려면 키워드와 값을 제공해야합니다. 이 형식을 사용 하여이 작업을 수행 할 수 있습니다.

 배열 이름 [키] = 값 

일부 배열 요소를 추가합시다.

 약어 [ack] = 확인 응답 
 약어 [BGP] = "국경 게이트웨이 프로토콜"
 약어 [CIDR] = "클래스없는 도메인 간 라우팅"
 약어 [DHCP] = "동적 호스트 구성 프로토콜"
 약어 [EOF] = "프레임 끝"

이러한 명령은 5 개의 배열 요소를 정의합니다. 값이 값에 공백이있는 경우 값은 따옴표로 묶여 있습니다. 우리의 키워드는 알파벳 순서로 입력되었지만 원하는 모든 순서로 입력 할 수 있습니다. 키워드는 고유해야합니다. 동일한 키워드로 두 개의 항목을 만들려고하면 입력 한 두 번째 값이 먼저 덮어 씁니다. 해당 키워드가있는 항목 만 있으며 추가 한 두 번째 값과 연결됩니다.

배열에서 값을 검색하려면 다음과 같이 명령을 사용합니다.

 $ {배열 이름 [키]} 

우리는 에코를 사용하여 출력을 터미널 창으로 전송할 수 있습니다.

 에코 $ {약어 [ACK]} 
 에코 $ {약어 [DHCP]} 

루프 사용

배열은 매우 잘 루프에서 사용되는 자신을 빌려. 연관 배열도 예외는 아니다. 루프는 코드의 반복되는 부분없이 액션 시퀀스를 호출하는 효율적인 방법을 제공합니다. 우리가 루프를 살펴보기 전에, 배열을 선언 할 수있는 효율적인 방법이 있습니다.

우리는을 사용하여 배열을 만들 선언하다 명령 (같은 -NS 이전과 옵션), 그러나 우리는 명령 행에서 목록으로 키워드와 값을 제공합니다.

 선언 -A 나라 = ([ALB = 알바니아 [BHR = 바레인 [CMR = 카메룬 [DNK = 덴마크 [EGY = 이집트) 

"배열의 이름은"국가 "이고 등호하여이 값 목록에 연결 = . " 값 목록은 "괄호에 싸여 () "각 키워드는 괄호 안에 싸여있다" [] ". 값을 분리에는 쉼표가 없음을 유의하십시오. 공백이 포함 된 값 문자열이있는 경우 따옴표로 포장해야합니다.

연관 배열 대신 값의 키워드를 반환하려면 느낌표 "를 추가 ...에! "어레이 이름 앞에. 기호에서 " @ "모든 배열 요소를 의미하는 와일드 카드로서 이용 될 수있다.

이것 ~을위한 루프는 모든 키워드를 나열합니다 :

에서 키 "$ {국가 [@]!}"; 에코 $ 키를 할; 완료 

키워드는 반드시 그들이 생성 된 순서대로 나열되지 않습니다,하지만 그건 중요하지 않습니다. 연관 배열은 정렬 된 인덱스에 의존하지 않습니다.

우리는 또한 모든 키워드를 나열하는 매개 변수 확장을 사용할 수 있습니다. 그들은 한 줄 한 줄에없는 일에 표시됩니다.

 에코 "$ {! 국가 [@]}"
 에코 "$ {! 약어 [@]}"

우리는 보강 할 수 있습니다 우리의 ~을위한 루프는 같은 시간에 키워드와 값을 인쇄합니다.

에서 키 "$ {약어 [@]!}"; 에코 "$ 키를 - $ {약어 [$ 키]}"할; 완료 

우리가 배열에 얼마나 많은 요소를 알고 싶은 경우에, 우리는 배열 이름 대신 느낌표 앞에 해시 "#"을 사용할 수 있습니다.

 에코 "$ {! 국가 [@]}"
 에코 "$ {! 약어 [@]}"

배열 요소가 존재하는지 확인

당신이 키워드를 검색하지만 이러한 배열 요소가없는 경우, 반환 값은 빈 문자열입니다. 때로는 배열 요소의 유무에 대해 다른 표시를하는 것이 유용합니다.

우리의 "를 사용하여 배열 요소의 존재를 확인할 수 있습니다 + _ " 운영자. 이하지 우리가 본 적이 이전 사업자와 같은 배열 이름 앞에 키워드 다음에 오는 있습니다.

의 경우 [$ {약어 [EOF] +} _]; 다음 "발견"에코; "Not found"가 다른 에코; 인터넷 
의 경우 [$ {약어 [FTP] +} _]; 다음 "발견"에코; "Not found"가 다른 에코; 인터넷 

키워드 "EOF"와 배열 요소는 배열에서 발견되지만 키워드 "FTP"와 배열 요소는 아니다.

배열 요소 추가

연관 배열에 새로운 요소를 추가하는 것은 간단합니다. 일부 프로그래밍 언어와는 달리, 당신은 당신이 그것을 선언 할 때 배열의 크기를 정의 할 필요가 없습니다. 당신은 미리 정의 상한을 타격하지 않고 새로운 요소를 추가 유지할 수 있습니다.

배열에 새 요소를 추가하기 위해 "은을 사용 + = " 운영자.

 국가 + = ([FJI = 피지) 
 에코 "$ (# 나라 [@]}"
 에코 $ {국가 [FJI]} 

배열의 요소의 수는 여섯 가지이며, 새로운 키워드를 검색하면 배열 요소를 발견하고 그 값을 반환합니다.

배열 요소 및 배열을 제거

NS 해제 명령 배열 요소를 제거하는데 사용된다. 키워드에 공백이 있다면 따옴표로 포장.

 해제 약어 [EOF] 
의 경우 [$ {약어 [EOF] +} _]; 다음 "발견"에코; "Not found"가 다른 에코; 인터넷 

전체 배열 사용을 제거하려면 해제 어레이의 이름.

 해제 국가 

배열 변수 사용

연관 배열 변수를 사용하면 간단합니다. 이 예에서는 문자열 변수 키를 설정합니다 "EOF를." 우리가 배열에 새로운 배열 요소를 추가 할 때 우리는 변수를 사용합니다. 사실, 우리는 우리가 이전에 삭제하는 배열 요소를 대체하고 있습니다.

변수를 사용하여 새 키워드로 호출하여 새 배열 요소를 검색합니다. 키워드에 공백이 있으면 변수 이름을 따옴표로 랩해야합니다.

 키 = EOF 
 약어 [$ 키] = "프레임 끝"
 에코 $ {약어의 [eof]} 
 에코 $ {약어 [$ 키]} 

창의력을 얻으십시오

우리의 예제는 각 배열 요소가 다른 모든 다른 모든 배열 요소와 독립적 인 정보 컬렉션이었습니다. 각 하나는 고유 한 정의입니다. 그러나 연관 배열은 다른 컴퓨터 하드웨어의 사양과 같은 한 가지와 관련된 모든 정보를 쉽게 유지할 수 있습니다.

 Declare -a 사양 
 사양 [CPU] = "듀얼 코어 AMD Ryzen 5 3600"
 사양 [속도] = "3600 MHz"
 사양 [kernel] = "5.11.0-17-generic x86_64"
 사양 [MEM] = "1978.5 MIB"
 사양 [저장] = "32 Gib"
 사양 [쉘] = "bash"
 에코 $ {사양 [CPU]} 

언어로 효율적으로 작성하는 것은 해결하려는 문제에 대해 가장 적합한 메커니즘과 구조를 알고 가장 적절한 것을 선택하는 것을 의미합니다. 연관 배열은 사전처럼 이름으로 검색 할 수있는 데이터를 저장할 수있는 사용하기 쉬운 방법을 제공합니다.


리눅스 - 가장 인기있는 기사

어떻게 죽여 좀비 프로세스에 리눅스에

리눅스 Nov 25, 2024

[삼] 파 으마와 티 Achmad Zaenuri / 셔터 주식 잘못 작성된거나 심하게 수행하는 남길 수 있습니다 프로그램 좀비 프로세..


사용자가 Linux에서 암호를 변경하도록 강요하는 방법

리눅스 Nov 4, 2024

[삼] 일리아 Titchev / 셔터 주식 암호는 계정 보안에 키스톤입니다. 우리는 암호, 설정 암호 만료 기간을 재설정하고 리눅�..


Linux에 신호 데스크탑을 설치하는 방법

리눅스 Jan 22, 2025

[삼] 엘리 쥬 가이슬러 / Shutterstock.com 신호 ~이다 개인 정보 보호에 초점을 맞춘 스마트 폰 메시징 응용 프로그램 모�..


초보자 용 Docker : 알아야 할 모든 것

리눅스 Jun 15, 2025

[삼] [삼] 도커 패키지 된 응용 프로그램을 만듭니다 컨테이너라고합니다. 각 컨테이너는 A.와 비슷한 고립 된 환경을 제공합니다 가�..


KDE 연결이 마지막으로 아이폰에오고있다

리눅스 Oct 26, 2025

[삼] kde. 당신이 당신의 iPhone을 당신의 아이폰을 멋지게 만들 수있는 쉬운 방법을 찾고 있다면 KDE 데스크탑 , 오늘은 당신..


이 새로운 리눅스 게이밍 노트북

리눅스 Oct 20, 2025

[삼] Juno 컴퓨터 리눅스와 게임은 최근에 훨씬 더 많이 모으기 시작합니다. NS 스팀 데크 Linux가 설치된 방식이며 Juno는 방금 새..


리눅스에서 어떻게 실행 안드로이드 앱

리눅스 Oct 19, 2025

[삼] quietbits / shutterstock.com Linux에서 Android 앱을 실행하고 있지만 다리지, 개발 환경 또는 Sideloading Apps를 디버깅하고 싶지 ..


Linux에 환경 변수를 나열하는 방법

리눅스 Oct 31, 2025

Linux에서 환경 변수는 중요한 값과 설정을 보유합니다. 스크립트, 응용 프로그램 및 쉘은 이러한 값을 읽고 종종 스스로 구성하거나 동작을 제어�..


카테고리