Unix / Linux - Sử dụng Mảng Shell

Trong chương này, chúng ta sẽ thảo luận về cách sử dụng mảng shell trong Unix. Một biến shell có đủ khả năng để giữ một giá trị duy nhất. Các biến này được gọi là biến vô hướng.

Shell hỗ trợ một loại biến khác được gọi là array variable. Điều này có thể chứa nhiều giá trị cùng một lúc. Mảng cung cấp một phương pháp nhóm một tập hợp các biến. Thay vì tạo tên mới cho mỗi biến được yêu cầu, bạn có thể sử dụng một biến mảng duy nhất lưu trữ tất cả các biến khác.

Tất cả các quy tắc đặt tên được thảo luận cho Biến Shell sẽ có thể áp dụng trong khi đặt tên mảng.

Xác định giá trị mảng

Sự khác biệt giữa biến mảng và biến vô hướng có thể được giải thích như sau.

Giả sử bạn đang cố gắng biểu diễn tên của các sinh viên khác nhau dưới dạng một tập hợp các biến. Mỗi biến riêng lẻ là một biến vô hướng như sau:

NAME01="Zara"
NAME02="Qadir"
NAME03="Mahnaz"
NAME04="Ayan"
NAME05="Daisy"

Chúng ta có thể sử dụng một mảng duy nhất để lưu trữ tất cả các tên được đề cập ở trên. Sau đây là phương pháp đơn giản nhất để tạo một biến mảng. Điều này giúp gán một giá trị cho một trong các chỉ số của nó.

array_name[index]=value

Ở đây array_name là tên của mảng, index là chỉ số của mục trong mảng mà bạn muốn đặt và value là giá trị bạn muốn đặt cho mục đó.

Ví dụ, các lệnh sau:

NAME[0]="Zara"
NAME[1]="Qadir"
NAME[2]="Mahnaz"
NAME[3]="Ayan"
NAME[4]="Daisy"

Nếu bạn đang sử dụng ksh shell, đây là cú pháp khởi tạo mảng -

set -A array_name value1 value2 ... valuen

Nếu bạn đang sử dụng bash shell, đây là cú pháp khởi tạo mảng -

array_name=(value1 ... valuen)

Truy cập giá trị mảng

Sau khi bạn đã đặt bất kỳ biến mảng nào, bạn truy cập vào nó như sau:

${array_name[index]}

Ở đây array_name là tên của mảng và index là chỉ số của giá trị được truy cập. Sau đây là một ví dụ để hiểu khái niệm -

#!/bin/sh

NAME[0]="Zara"
NAME[1]="Qadir"
NAME[2]="Mahnaz"
NAME[3]="Ayan"
NAME[4]="Daisy"
echo "First Index: ${NAME[0]}"
echo "Second Index: ${NAME[1]}"

Ví dụ trên sẽ tạo ra kết quả sau:

$./test.sh
First Index: Zara
Second Index: Qadir

Bạn có thể truy cập tất cả các mục trong một mảng theo một trong những cách sau:

${array_name[*]}
${array_name[@]}

Đây array_name là tên của mảng mà bạn quan tâm. Ví dụ sau sẽ giúp bạn hiểu khái niệm -

#!/bin/sh

NAME[0]="Zara"
NAME[1]="Qadir"
NAME[2]="Mahnaz"
NAME[3]="Ayan"
NAME[4]="Daisy"
echo "First Method: ${NAME[*]}"
echo "Second Method: ${NAME[@]}"

Ví dụ trên sẽ tạo ra kết quả sau:

$./test.sh
First Method: Zara Qadir Mahnaz Ayan Daisy
Second Method: Zara Qadir Mahnaz Ayan Daisy