Computer >> Máy Tính >  >> Lập trình >> Lập trình BASH

Biến mảng trong Bash, Cách sử dụng, Với các ví dụ

Chúng tôi đã đề cập đến việc sử dụng các biến trong Bash trước đây - bài viết này sẽ giải thích về Bash array và cung cấp một số ví dụ sử dụng.

Mảng là gì

Mảng là một loại biến có thể chứa nhiều giá trị. Đó là danh sách các giá trị mà bạn có thể lặp lại và thực hiện các thao tác trên từng giá trị riêng lẻ.

Ví dụ:bạn có thể muốn thực hiện một hành động trên danh sách các tệp. Bằng cách lưu trữ danh sách đó dưới dạng một mảng, bạn có thể lặp qua các tên tệp trong đó và thực hiện hành động trên từng tên.

Mảng được lập chỉ mục, với vị trí của mỗi mục trong mảng được biểu thị bằng một số bắt đầu từ 0 .

Mảng bash không yêu cầu các phần tử của mảng phải được lập chỉ mục liền kề - hoặc liền kề không có khoảng trống - bạn có thể có các giá trị tại các vị trí mảng 0, 3, 17 mà không có giá trị nào ở giữa chẳng hạn.

Bạn có thể tìm hiểu thêm về mảng Bash tại Dự án Tài liệu Linux.

Tạo Mảng Bash

Mảng bash có thể chứa bất kỳ loại biến bash nào - đường dẫn, chuỗi, số - thậm chí là các mảng khác.

Tại sao bạn nên gói các đường dẫn tệp trong chuỗi trong tập lệnh Shell của bạn

Có một số phương pháp để khai báo mảng, được nêu bên dưới.

Tuyên bố gián tiếp

Mảng có thể được khai báo gián tiếp bằng cách gán giá trị của phần tử mảng - mảng sẽ được tạo cùng với phần tử mảng có giá trị cho trước.

ARRAYNAME[INDEX]=VALUE

Ví dụ:

#!/bin/bash
peopleArray[3]="Tom"

Mảng peopleArray sẽ được tạo tự động (gián tiếp) khi một giá trị trong mảng được chỉ định - trong trường hợp này, giá trị “Tom” được chỉ định cho chỉ mục 3 trong peopleArray mới được tạo .

Khai báo trực tiếp

Lệnh khai báo cũng có thể được sử dụng để xác định một mảng:

declare -a ARRAYNAME

Ví dụ:

declare -a peopleArray

Điều này sẽ tạo ra một mảng trống được gọi là peopleArray .

Tạo thông qua Gán kết hợp

Đây là phương pháp bạn có thể sẽ sử dụng nhiều nhất. Nó tạo ra một mảng với các giá trị đã được gán.

ARRAYNAME=(value1 value2 ...)

Điều này sẽ gán giá trị của mảng cho tên biến. Các giá trị mảng được chứa trong () (dấu ngoặc chuẩn) và được phân tách bằng dấu cách. Các giá trị chứa khoảng trắng phải được trích dẫn.

Ví dụ:

peopleArray=("Tom", "Bill", "Theodore Baker Sr.")

Gán giá trị cho một mảng

Thêm giá trị mới vào cuối mảng

Để thêm giá trị vào một mảng, hãy chỉ định giá trị mà không có chỉ mục nào được chỉ định:

ARRAYNAME[]=VALUE

Ví dụ:

peopleArray[]="Tony"

Thay thế giá trị trong một mảng

Để thay thế một giá trị, hãy ghi đè giá trị vào chỉ mục của giá trị hiện tại.

Ví dụ:nếu bạn có một mảng có giá trị ở chỉ mục 7 mà bạn muốn thay thế:

peopleArray[7]="Tony"

Xóa giá trị trong một mảng

Xóa giá trị khỏi một mảng bằng cách sử dụng unset lệnh và chỉ định chỉ mục mảng:

unset ARRAYNAME[INDEX]

Ví dụ:

unset peopleArray[1]

… Sẽ xóa giá trị thứ hai trong mảng peopleArray .

Truy cập giá trị mảng

Để truy cập giá trị trong một mảng, bạn phải sử dụng dấu ngoặc nhọn - nếu không, Bash sẽ không diễn giải các dấu ngoặc chứa chỉ số mảng một cách chính xác:

echo ${ARRAYNAME[INDEX]}

Ví dụ:

#!/bin/bash
peopleArray=("Tom", "Bill", "Theodore Baker Sr.")
echo ${peopleArray[0]}

… Sẽ xuất:

Tom

Trong khi nếu dòng cuối cùng là:

echo $peopleArray[0]

Mảng vòng lặp

Điều phổ biến nhất bạn sẽ làm với mảng là lặp qua chúng để thực hiện các thao tác trên mỗi phần tử. Chúng tôi đang đi trước mọi thứ và đã đề cập đến bài viết này.