là gì Bash Từ điển trên Linux, và làm thế nào để sử dụng chúng?

Jun 16, 2025
Linux
fatmawati achmad zaenuri / shutterstock.com [số 8]

Từ điển Bash cung cấp cho bạn bản đồ băm và các mảng kết hợp trong các tập lệnh shell linux. Chúng tôi sẽ chỉ cho bạn cách sử dụng các cấu trúc dữ liệu mạnh mẽ và hữu ích này trong các tập lệnh Vỏ Linux của riêng bạn.

Một bông hồng bởi bất kỳ tên nào khác

Tên chính thức cho từ điển là mảng kết hợp. Chúng còn được gọi là bảng băm và bản đồ băm. Chúng là cấu trúc dữ liệu có chức năng tương tự như một mảng thông thường, nhưng với sự khác biệt đáng kể.

Một mảng là một tập hợp các giá trị dữ liệu được giữ trong một cấu trúc dữ liệu. Để truy cập bất kỳ giá trị dữ liệu nào, được gọi là các thành phần mảng, bạn cần biết vị trí của chúng trong mảng. Vị trí của một phần tử mảng trong mảng được gọi là chỉ mục của nó, vì vậy các loại mảng này được gọi là mảng được lập chỉ mục. Chúng là loại mảng được sử dụng phổ biến nhất.

Tuy nhiên, họ có một nhược điểm. Làm thế nào để bạn truy cập một phần tử mảng nếu bạn không biết vị trí của nó trong danh sách? Bạn cần chạy qua tất cả các phần tử trong mảng, thử nghiệm để xem liệu giá trị ở vị trí đó là một trong những vị trí mà bạn đang tìm kiếm.

Mảng kết hợp vượt qua vấn đề đó. Họ không sử dụng các số nguyên để xác định các yếu tố mảng duy nhất. Họ sử dụng các từ duy nhất được gọi là từ khóa. Bạn có thể truy xuất giá trị cho một phần tử mảng bằng cách sử dụng từ khóa của nó, bất kể vị trí của nó trong mảng. Với một mảng được chỉ mục, các số nguyên đại diện cho các vị trí trong mảng đang theo thứ tự tăng dần. Các từ khóa trong một mảng kết hợp có thể theo bất kỳ thứ tự nào.

Bạn có thể tra cứu một giá trị trong một mảng kết hợp bằng cách tìm kiếm từ khóa của nó. Nhìn lên một từ và lấy ra những người bắt chước giá trị liên quan của nó tìm kiếm một từ trong từ điển và tìm thấy ý nghĩa của nó. Đó là lý do tại sao các mảng liên kết được gọi là từ điển.

Bash 4.0 trở lên

Mảng liên kết được hỗ trợ trong vỏ bash. [số 8] Phiên bản 4.0 trở lên. Nếu bạn đang sử dụng phân phối Linux hiện tại, bạn sẽ ổn. Để kiểm tra phiên bản Bash của bạn, hãy sử dụng lệnh này:

 Bash --Version 

Máy được sử dụng để nghiên cứu bài viết này đã cài đặt Bash 5.1.4, vì vậy chúng tôi tốt để đi.

Nguyên tắc cơ bản

Để tạo một mảng kết hợp trên dòng lệnh đầu cuối hoặc trong tập lệnh, chúng ta sử dụng lệnh khai báo bash. Các -MỘT Tùy chọn (liên kết) nói với bash rằng đây sẽ là một mảng kết hợp chứ không phải là một mảng được lập chỉ mục.

 Tuyên bố -A từ viết tắt 

Điều này tạo ra một mảng kết hợp có tên là "từ viết tắt".

Để đặt một số dữ liệu vào mảng của chúng tôi, chúng tôi cần cung cấp từ khóa và giá trị. Chúng ta có thể làm điều này bằng định dạng này:

 Tên mảng [KET] = Giá trị 

Hãy thêm một số yếu tố mảng:

 Từ viết tắt [ACK] = Xác nhận 
 Từ viết tắt [BGP] = "Giao thức cổng biên giới" 
 từ viết tắt [CIDR] = "Định tuyến liên tên miền không hợp lệ" 
 Từ viết tắt [DHCP] = Giao thức cấu hình máy chủ động "
 Từ viết tắt [EOF] = "Kết thúc khung hình" 

Những lệnh đó xác định năm yếu tố mảng. Lưu ý rằng các giá trị được gói trong dấu ngoặc kép nếu có khoảng trắng trong giá trị. Từ khóa của chúng tôi đã được nhập theo thứ tự bảng chữ cái, nhưng chúng có thể được nhập theo bất kỳ thứ tự nào bạn muốn. Các từ khóa phải là duy nhất. Nếu bạn cố gắng tạo hai mục nhập với cùng một từ khóa, giá trị thứ hai mà bạn nhập sẽ ghi đè lên đầu tiên. Bạn vẫn sẽ chỉ có một mục nhập với từ khóa đó và nó sẽ được liên kết với giá trị thứ hai mà bạn đã thêm.

Để lấy các giá trị từ mảng, chúng tôi sử dụng các lệnh ở định dạng này:

 $ {tên mảng [phím]} 

Chúng ta có thể sử dụng echo để gửi đầu ra vào cửa sổ Terminal:

 echo $ {từ viết tắt [ack]} 
 echo $ {từ viết tắt [dhcp]} 

Sử dụng vòng lặp

Mảng cho vay để được sử dụng trong các vòng lặp rất tốt. Mảng liên kết cũng không ngoại lệ. Các vòng lặp cung cấp các cách hiệu quả để gọi một chuỗi các hành động mà không cần các phần lặp đi lặp lại của mã. Trước khi chúng ta nhìn vào các vòng lặp, có một cách hiệu quả để khai báo mảng.

Chúng tôi tạo các mảng bằng cách sử dụng tuyên bố lệnh (giống nhau -MỘT Tùy chọn như trước), nhưng chúng tôi cung cấp các từ khóa và giá trị dưới dạng danh sách trên dòng lệnh.

 Tuyên bố -A các quốc gia = ([Alb] = Albania [BHR] = Bahrain [CMR] = Cameroon [Dnk] = Đan Mạch [EGY] = Ai Cập) 

Tên mảng là "quốc gia" và nó được kết nối với danh sách giá trị bằng dấu bằng " =. . " Danh sách giá trị được gói trong ngoặc đơn " () "Và mỗi từ khóa được gói trong ngoặc" [] ". Lưu ý rằng không có dấu phẩy tách các giá trị. Nếu bạn có một chuỗi giá trị có chứa khoảng trắng, bạn sẽ cần phải gói nó trong dấu ngoặc kép.

Để tạo một mảng kết hợp trả về một từ khóa thay vì giá trị, hãy thêm một dấu chấm than " Những "Trước tên mảng. Biểu tượng tại " @ Có thể được sử dụng như một ký tự đại diện, có nghĩa là tất cả các yếu tố mảng.

Cái này Vòng lặp sẽ liệt kê tất cả các từ khóa:

 Đối với khóa trong "$ {! Các quốc gia [@]}"; Do echo $ key; thực hiện 

Lưu ý rằng các từ khóa không nhất thiết phải được liệt kê theo thứ tự mà chúng được tạo, nhưng điều đó không thành vấn đề. Mảng liên kết không dựa vào một chỉ mục được đặt hàng.

Chúng ta cũng có thể sử dụng mở rộng tham số để liệt kê tất cả các từ khóa. Chúng sẽ được liệt kê trên một dòng, không phải một dòng trên mỗi dòng.

 echo "$ {! Các quốc gia [@]}" 
 echo "$ {! Từ viết tắt [@]}" 

Chúng ta có thể tăng cường vòng lặp để in các từ khóa và giá trị cùng một lúc.

 Đối với khóa trong "$ {! Từ viết tắt [@]}"; Do echo "Key $ - $ {từ viết tắt [$ phím]}"; thực hiện 

Nếu chúng ta muốn biết có bao nhiêu phần tử trong mảng, chúng ta có thể sử dụng hàm băm "#" ở phía trước tên mảng thay vì dấu chấm than.

 echo "$ {! Các quốc gia [@]}" 
 echo "$ {! Từ viết tắt [@]}" 

Kiểm tra xem một phần tử mảng tồn tại

Nếu bạn tìm kiếm một từ khóa nhưng không có phần tử mảng như vậy, giá trị trả về sẽ là một chuỗi trống. Đôi khi thật hữu ích khi có một chỉ số khác với sự hiện diện hoặc vắng mặt của một phần tử mảng.

Chúng ta có thể kiểm tra sự hiện diện của một phần tử mảng bằng cách sử dụng " + _ " nhà điều hành. Lưu ý rằng điều này xuất hiện sau từ khóa, không phải ở phía trước tên mảng giống như các toán tử trước đó chúng ta đã thấy.

 Nếu [$ {từ viết tắt [EOF] + _}]; sau đó echo "tìm thấy"; khác echo "không tìm thấy"; fi 
 Nếu [$ {từ viết tắt [FTP] + _}]; sau đó echo "tìm thấy"; khác echo "không tìm thấy"; fi 

Phần tử mảng với từ khóa "EOF" được tìm thấy trong mảng, nhưng phần tử mảng có từ khóa "ftp" thì không.

Thêm các phần tử mảng

Thêm các yếu tố mới vào một mảng kết hợp là dễ dàng. Không giống như một số ngôn ngữ lập trình, bạn không cần xác định kích thước của mảng khi bạn khai báo nó. Bạn có thể tiếp tục thêm các yếu tố mới mà không nhấn một giới hạn trên được xác định trước.

Để thêm một yếu tố mới vào mảng, chúng tôi sử dụng " + =. " nhà điều hành.

 các quốc gia + = ([fji] = fiji) 
 echo "$ (# quốc gia [@]}" 
 echo $ {các quốc gia [fji]} 

Số lượng các phần tử trong mảng bây giờ là sáu và tìm kiếm từ khóa mới tìm phần tử mảng và trả về giá trị của nó.

Xóa các phần tử và mảng mảng

Các không được đặt lệnh được sử dụng để loại bỏ các phần tử mảng. Nếu từ khóa có khoảng trắng trong đó, hãy bọc nó trong dấu ngoặc kép.

 Không ghi nhớ từ viết tắt [EOF] 
 Nếu [$ {từ viết tắt [EOF] + _}]; sau đó echo "tìm thấy"; khác echo "không tìm thấy"; fi 

Để xóa toàn bộ mảng, sử dụng không được đặt với tên của mảng.

 Nô giá 

Sử dụng các biến với mảng

Sử dụng các biến với các mảng kết hợp là đơn giản. Trong ví dụ này, chúng tôi sẽ đặt một phím biến thành chuỗi "EOF." Chúng tôi sẽ sử dụng biến khi chúng tôi thêm một phần tử mảng mới vào mảng. Trên thực tế, chúng tôi đang thay thế phần tử mảng mà chúng tôi đã xóa trước đó.

Chúng tôi sẽ truy xuất phần tử mảng mới bằng cách gọi nó bằng từ khóa mới và cũng bằng cách sử dụng biến. Nếu từ khóa chứa khoảng trắng, bạn sẽ cần bọc tên biến trong dấu ngoặc kép.

 KEY = EOF 
 Từ viết tắt [$ Key] = "Kết thúc khung hình" 
 echo $ {từ viết tắt [EOF]} 
 echo $ {từ viết tắt [$ phím]} 

Sáng tạo

Các ví dụ của chúng tôi đã được các bộ sưu tập thông tin nơi mỗi phần tử mảng độc lập với tất cả các thành phần khác, giống như một từ điển. Mỗi người là một định nghĩa duy nhất. Nhưng các mảng kết hợp cũng có thể dễ dàng giữ một loạt các thông tin, tất cả các thông tin liên quan đến một thứ, chẳng hạn như thông số kỹ thuật của các phần cứng máy tính khác nhau:

 Tuyên bố -A Đặc điểm kỹ thuật 
 Đặc điểm kỹ thuật [CPU] = "lõi kép amd ryzen 5 3600" 
 Đặc điểm kỹ thuật [Tốc độ] = "3600 MHz" 
 Đặc điểm kỹ thuật [kernel] = "5.11.0-17-generic x86_64" 
 Đặc điểm kỹ thuật [mem] = "1978,5 MIB" 
 Thông số kỹ thuật [Lưu trữ] = "32 Gib" 
 Đặc điểm kỹ thuật [Shell] = "Bash" 
 echo $ {Đặc điểm kỹ thuật [CPU]} 

Viết hiệu quả trong một ngôn ngữ có nghĩa là biết các cơ chế và cấu trúc mà nó cung cấp và chọn một cấu trúc phù hợp nhất cho vấn đề bạn đang cố gắng giải quyết. Mảng kết hợp cung cấp cho bạn một cách dễ sử dụng để lưu trữ dữ liệu mà bạn có thể tìm kiếm theo tên, giống như từ điển.


Linux - Các bài báo phổ biến nhất

Cách buộc người dùng thay đổi mật khẩu của họ trên Linux

Linux Nov 4, 2024

Ilya Titchev / Shutterstock [số 8] Mật khẩu là Keystone để bảo mật tài khoản. Chúng tôi sẽ chỉ cho bạn cách đặt lại mật kh..


Làm thế nào để quản lý máy chủ Linux với giao diện Web Cockpit

Linux Dec 9, 2024

Fatmawati Achmad Zaenuri / Shutterstock [số 8] Bạn có thể dễ dàng theo dõi và quản lý nhiều máy tính Linux bằng buồng lái, một c�..


Làm thế nào để sử dụng Brace Expansion trong Bash Shell Linux

Linux May 12, 2025

Fatmawati Achmad Zaenuri / Shutterstock [số 8] Nẹp mở rộng là một kỹ thuật hữu ích để tạo danh sách các chuỗi có thể được..


6 xuất sắc nhất Lightweight Linux distro

Linux Jul 27, 2025

3dmi / shutterstock.com. [số 8] Nếu máy tính Windows hoặc Mac của bạn đã cũ và đang vật lộn để theo kịp, cài đặt Linux có th..


"gốc" trên Linux là gì?

Linux Jul 7, 2025

fatmawati achmad zaenuri / shutterstock.com [số 8] Người dùng gốc là thực thể mạnh nhất trong vũ trụ Linux với sức mạnh vô h�..


Máy tính xách tay Gaming Gaming mới này có thông số kỹ thuật để chạy bất cứ thứ gì

Linux Oct 20, 2025

Máy tính Juno [số 8] Linux và Gaming đang bắt đầu đến với nhau rất nhiều gần đây. Các Dàn Steam. đang trên đường với Lin..


Cách tích hợp các ứng dụng và tập lệnh vào máy tính để bàn Linux

Linux Oct 10, 2025

Trên Linux, một ứng dụng không có tệp máy tính để bàn giành được tích hợp với môi trường máy tính để bàn của bạn. Hầu hết các ứng dụng cung c�..


Cách liệt kê các dịch vụ Linux với SystemCTL

Linux Oct 18, 2025

Máy tính Linux của bạn dựa vào rất nhiều tác vụ nền gọi là Dịch vụ hoặc Daemons. Trên các bản phân phối dựa trên SystemD, bạn có các lệnh tích hợp ..


Thể loại