Android

Mảng Bash

Briana's Bash Tutorial: How to Use the Command Line in Linux, Windows, and Mac

Briana's Bash Tutorial: How to Use the Command Line in Linux, Windows, and Mac

Mục lục:

Anonim

Mảng là một trong những cấu trúc dữ liệu cơ bản và được sử dụng nhiều nhất. Bạn có thể nghĩ về một mảng là một biến có thể lưu trữ nhiều biến trong đó., chúng tôi sẽ đề cập đến các mảng Bash và giải thích cách sử dụng chúng trong các tập lệnh Bash của bạn.

Mảng Bash

Bash hỗ trợ các kiểu mảng được liên kết và lập chỉ mục số một chiều. Mảng số được tham chiếu bằng các số nguyên và kết hợp được tham chiếu bằng các chuỗi.

Các mảng được lập chỉ mục bằng số có thể được truy cập từ cuối bằng cách sử dụng các chỉ số âm, chỉ mục của -1 tham chiếu phần tử cuối cùng. Các chỉ số không phải tiếp giáp nhau.

Không giống như hầu hết các ngôn ngữ lập trình, các phần tử mảng Bash không phải cùng loại dữ liệu. Bạn có thể tạo một mảng chứa cả chuỗi và số.

Bash không hỗ trợ các mảng nhiều chiều và bạn không thể có các phần tử mảng cũng là mảng.

Không có giới hạn về số lượng phần tử tối đa có thể được lưu trữ trong một mảng.

Tạo Mảng Bash

Mảng trong Bash có thể được khởi tạo theo những cách khác nhau.

Tạo các mảng được lập chỉ mục số

Các biến Bash được gỡ bỏ, bất kỳ biến nào cũng có thể được sử dụng như một mảng được lập chỉ mục mà không cần khai báo nó.

Để khai báo rõ ràng một mảng, sử dụng khai báo dựng sẵn:

declare -a array_name

Một cách để tạo một mảng được lập chỉ mục là sử dụng mẫu sau:

array_name=value_1 array_name=value_2 array_name=value_n

Trong đó index_* là số nguyên dương.

Một cách khác để tạo một mảng số là chỉ định danh sách các phần tử trong ngoặc đơn, được phân tách bằng khoảng trống:

array_name=(element_1 element_2 element_N)

Khi mảng được tạo bằng biểu mẫu ở trên, việc lập chỉ mục bắt đầu từ 0 tức là phần tử đầu tiên có chỉ số là 0 .

Tạo mảng kết hợp

Không giống như được lập chỉ mục bằng số, các mảng kết hợp phải được khai báo trước khi chúng có thể được sử dụng.

Để khai báo một mảng kết hợp, sử dụng declare dựng sẵn với tùy chọn -A (chữ hoa):

declare -A array_name

Mảng kết hợp có thể được tạo bằng cách sử dụng mẫu sau:

declare -A array_name array_name=value_foo array_name=value_bar array_name=value_xyz

Trong đó index_* có thể là bất kỳ chuỗi nào.

Bạn cũng có thể tạo một mảng kết hợp bằng cách sử dụng mẫu dưới đây:

declare -A array_name array_name=(=value_foo =value_bar =value_xyz)

Hoạt động mảng

Cú pháp mảng Bash có thể trông hơi lạ lúc đầu, nhưng nó sẽ có ý nghĩa hơn khi bạn đọc bài viết này.

Yếu tố tham khảo

Để tham chiếu một yếu tố duy nhất, bạn cần biết chỉ số yếu tố.

Bất kỳ yếu tố nào cũng có thể được tham chiếu bằng cú pháp sau:

${array_name} Cú pháp để truy cập một phần tử mảng tương tự như cú pháp của hầu hết các ngôn ngữ lập trình. Các dấu ngoặc nhọn ${} được yêu cầu để tránh các toán tử mở rộng tên tệp của shell.

Hãy in phần tử với chỉ số 1 :

## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print element echo ${my_array}

Helium

## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print all elements echo "${my_array}"

Hydrogen Helium Lithium Beryllium

Sự khác biệt duy nhất giữa @ * là khi biểu mẫu ${my_array} được bao quanh với dấu ngoặc kép. Trong trường hợp này, * mở rộng thành một từ duy nhất trong đó các phần tử mảng được phân tách bằng dấu cách. @ mở rộng từng phần tử mảng thành một từ riêng biệt. Điều này đặc biệt quan trọng khi sử dụng biểu mẫu để xóa mù chữ thông qua các phần tử mảng.

Để in các phím của mảng thêm ! Toán tử trước tên mảng:

${!array_name}

Đây là một ví dụ:

## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## print all elements echo "${!my_array}"

0 1 2 3

Độ dài mảng

Để có được độ dài của một mảng, sử dụng mẫu sau:

${#array_name} Cú pháp giống như khi tham chiếu tất cả các phần tử thêm vào ký tự # trước tên mảng.

## declare the array declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## array Length echo ${#my_array}

4

Vòng qua mảng

Cách phổ biến nhất để lặp lại qua từng mục trong một mảng là sử dụng vòng lặp for:

declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## Array Loop for i in "${my_array}" do echo "$i" done

Đoạn mã trên sẽ lặp lại trên mảng và in từng phần tử trong một dòng mới:

Hydrogen Helium Lithium Beryllium

Dưới đây là một ví dụ về cách in tất cả các khóa và giá trị:

declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## Array Loop for i in "${!my_array}" do echo "$i" "${my_array}" done

0 Hydrogen 1 Helium 2 Lithium 3 Beryllium

Một cách khác để lặp qua một mảng là lấy chiều dài của mảng và sử dụng vòng lặp C style :

declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") # Length of the array length=${#my_array} # Array Loop for ((i=0; i < ${length}; i++)) do echo $i ${my_array} done

0 Hydrogen 1 Helium 2 Lithium 3 Beryllium

Thêm một yếu tố mới

Để thêm một phần tử mới vào một mảng bash và chỉ định chỉ mục của nó, hãy sử dụng mẫu sau:

my_array="New Element"

Đây là một ví dụ:

declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## add new element my_array="Aluminum" ## print all elements echo "${my_array}"

Hydrogen Helium Lithium Beryllium Aluminum

Một cách khác để thêm một phần tử mới vào một mảng mà không chỉ định chỉ mục là sử dụng toán tử += . Bạn có thể thêm một hoặc nhiều yếu tố:

declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## add new elements my_array+=(Cobalt Nickel) ## print all elements echo "${my_array}"

Hydrogen Helium Lithium Beryllium Cobalt Nickel

Xóa một phần tử

Để xóa một yếu tố, bạn sẽ cần biết chỉ số thành phần. Một phần tử có thể được loại bỏ bằng lệnh unset :

unset my_array

Hãy xem một ví dụ:

declare -a my_array=("Hydrogen" "Helium" "Lithium" "Beryllium") ## remove element unset my_array ## print all elements echo "${my_array}"

Hydrogen Helium Beryllium

Phần kết luận

Chúng tôi đã giải thích làm thế nào để tạo các mảng được lập chỉ mục và liên kết số. Chúng tôi cũng đã chỉ ra cách lặp qua các mảng, tính toán độ dài mảng và thêm và loại bỏ các phần tử.

thiết bị đầu cuối bash