Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình Bash

Làm Chủ Biến Mảng Trong Bash: Cách Sử Dụng, Ví Dụ & Thực Hành Tốt Nhất

Chúng tôi đã đề cập đến việc sử dụng biến trong Bash trước đó – bài viết này sẽ giải thích các biến mảng trong Bash 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à một danh sách các giá trị mà bạn có thể lặp qua 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 một danh sách các tệp. Bằng cách lưu trữ danh sách đó dưới dạng 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ệp.

Các mảng được lập chỉ mục, với vị trí của từng 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ử mảng phải được lập chỉ mục liên tục – hoặc liền kề không có khoảng trống – bạn có thể có giá trị tại vị trí mảng 0, 3, 17 mà không có giá trị ở giữa, ví dụ.

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

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 Bọc Đường Dẫn Tệp Trong Dấu Nháy Trong Script Shell

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

Khai Báo Gián Tiếp

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

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 gán – trong trường hợp này, giá trị “Tom” được gán cho chỉ mục 3 trong peopleArray mới tạo.

Khai Báo Trực Tiếp

Lệnh declare cũng có thể được dùng để định nghĩa một mảng:

declare -a ARRAYNAME

Ví dụ:

declare -a peopleArray

Điều này sẽ tạo một mảng rỗng tên là peopleArray.

Tạo Bằng Gán Phức Hợp (Compound Assignment)

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

ARRAYNAME=(value1 value2 ...)

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

Ví dụ:

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

Gán Giá Trị Cho Mảng

Thêm Giá Trị Mới Vào Cuối Mảng

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

ARRAYNAME[]=VALUE

Ví dụ:

peopleArray[]="Tony"

Thay Thế Giá Trị Trong Mảng

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

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

peopleArray[7]="Tony"

Xóa Giá Trị Trong Mảng

Xóa một giá trị khỏi mảng bằng cách sử dụng lệnh unset 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ả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 đúng dấu ngoặc vuông chứa chỉ mục mảng:

echo ${ARRAYNAME[INDEX]}

Ví dụ:

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

…sẽ xuất ra:

Tom

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

echo $peopleArray[0]

Lặp Qua Mảng

Đ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 từng phần tử. Chúng tôi đã có một bài viết chuyên biệt về chủ đề này.