OnWorks Linux và Windows Online WorkStations

Logo

Lưu trữ trực tuyến miễn phí cho máy trạm

<Trước | Nội dung | Tiếp theo>

Biến cục bộ

Trong các tập lệnh mà chúng tôi đã viết cho đến nay, tất cả các biến (bao gồm cả hằng số) đã được biến toàn cục. Các biến toàn cục duy trì sự tồn tại của chúng trong suốt chương trình. Điều này tốt cho nhiều thứ, nhưng đôi khi nó có thể làm phức tạp việc sử dụng các hàm shell. Các chức năng bên trong vỏ, người ta thường mong muốn có biến cục bộ. Các biến cục bộ chỉ khả thi trong hàm shell mà chúng được định nghĩa và không còn tồn tại sau khi hàm shell kết thúc.

Việc có các biến cục bộ cho phép lập trình viên sử dụng các biến có tên có thể tồn tại sẵn, trong tập lệnh toàn cục hoặc trong các hàm shell khác, mà không phải lo lắng về xung đột tên tiềm ẩn.

hình ảnh

Dưới đây là một đoạn mã ví dụ minh họa cách các biến cục bộ được định nghĩa và sử dụng:


#! / bin / bash


# local-vars: script để chứng minh các biến cục bộ

#! / bin / bash


# local-vars: script để chứng minh các biến cục bộ


foo = 0

# biến toàn cục foo

foo = 0


hàm_1 () {

local foo # biến foo cục bộ thành funct_1 foo = 1

echo "funct_1: foo = $ foo"

}


hàm_2 () {

local foo # biến foo cục bộ thành funct_2 foo = 2

echo "funct_2: foo = $ foo"

}


echo "global: foo = $ foo" funct_1

hàm_1 () {

local foo # biến foo cục bộ thành funct_1 foo = 1

echo "funct_1: foo = $ foo"

}


hàm_2 () {

local foo # biến foo cục bộ thành funct_2 foo = 2

echo "funct_2: foo = $ foo"

}


echo "global: foo = $ foo" funct_1

Biến cục bộ


echo "global: foo = $ foo" funct_2

echo "toàn cầu: foo = $ foo"

echo "global: foo = $ foo" funct_2

echo "toàn cầu: foo = $ foo"


Như chúng ta có thể thấy, các biến cục bộ được xác định bằng cách đặt trước tên biến bằng từ địa phương. Điều này tạo ra một biến cục bộ cho hàm shell mà nó được định nghĩa. Khi đã ở bên ngoài hàm shell, biến không còn tồn tại nữa. Khi chúng tôi chạy tập lệnh này, chúng tôi thấy kết quả:



[tôi @ linuxbox ~] $ địa phương-vars

toàn cầu: foo = 0 funct_1: foo = 1 toàn cầu: foo = 0 funct_2: foo = 2 toàn cầu: foo = 0

[tôi @ linuxbox ~] $ địa phương-vars

toàn cầu: foo = 0 funct_1: foo = 1 toàn cầu: foo = 0 funct_2: foo = 2 toàn cầu: foo = 0


Chúng tôi thấy rằng việc gán các giá trị cho biến cục bộ foo trong cả hai hàm shell không ảnh hưởng đến giá trị của foo được xác định bên ngoài các chức năng.

Tính năng này cho phép các hàm shell được viết để chúng độc lập với nhau và với tập lệnh mà chúng xuất hiện. Điều này rất có giá trị, vì nó giúp ngăn một phần của chương trình can thiệp vào phần khác. Nó cũng cho phép ghi các hàm shell để chúng có thể di động được. Đó là, chúng có thể được cắt và dán từ tập lệnh này sang tập lệnh khác, nếu cần.


Điện toán đám mây hệ điều hành hàng đầu tại OnWorks: