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

Thay thế biến lồng nhau và các biến BASH được xác định trước trong Linux - Phần 11

Hai bài báo cuối cùng về BASH Shell, nơi chúng tôi thảo luận chi tiết về các biến đã được độc giả của chúng tôi đánh giá cao. Chúng tôi với tư cách là Tecmint-Team rất quan tâm đến việc cung cấp cho bạn các chủ đề mới nhất, cập nhật và có liên quan được đề cập chi tiết. Hơn nữa, chúng tôi luôn cố gắng đề cập đến các quan điểm chính của các chủ đề tương ứng.

Thay thế biến lồng nhau và các biến BASH được xác định trước trong Linux - Phần 11

Đây là bài viết cuối cùng về Biến Linux, nơi chúng ta sẽ xem sự thay thế biến và các biến được định nghĩa trong Shell trước khi kết thúc chủ đề này.

Bash thực hiện thay thế biến trước khi lệnh thực sự được thực thi. Linux Bash Shell tìm kiếm tất cả các dấu ‘$’ trước khi thực hiện lệnh và thay thế nó bằng giá trị của biến. Quá trình thay thế biến Bash chỉ được thực hiện một lần. Điều gì sẽ xảy ra nếu chúng ta có các biến lồng nhau?

Lưu ý :Theo ý chúng tôi là biến lồng nhau, biến được khai báo bên trong biến. Hãy xem trường hợp trên trong ví dụ bên dưới.

Khai báo một biến chỉ đọc và có thể thực thi như bên dưới.

admin@wsxdn.com:~$ declare -rx Linux_best_website="www.tecmint.com"

Kiểm tra giá trị của biến được lưu trữ.

admin@wsxdn.com:~$ printf "%s" "$Linux_best_website" 

www.tecmint.com

Bây giờ, hãy khai báo một biến khác là Chỉ đọc và Có thể thực thi.

admin@wsxdn.com:~$ declare -rx Linux_website="Linux_best_website"

Bây giờ tình hình là, chúng tôi đã xác định hai biến.

‘Linux_best_website’, giá trị là “www.tecmint.com”
và ‘Linux_website’, giá trị là “Linux_best_website”

Kết quả sẽ là gì nếu chúng ta chạy lệnh một dòng dưới đây?

admin@wsxdn.com:~$ printf "%s" "$Linux_website"

Trước tiên, nó sẽ thay thế biến ‘ $ Linux_website ‘, Với giá trị“ Linux_best_website ”Và sau đó là“ $ Linux_best_website ”Lại là một biến có giá trị là“ www.tecmint.com ”. Vì vậy, kết quả cuối cùng của việc chạy lệnh dưới đây sẽ là.

admin@wsxdn.com:~$ printf "%s" "$Linux_website" 

www.tecmint.com

Nhưng thật không may, đây không phải là tình huống, đầu ra mà chúng tôi nhận được là Linux_best_website .

Lý do? Chuẩn rồi! Bash chỉ thay thế giá trị của biến một lần. Điều gì về các tập lệnh và chương trình phức tạp, nơi chúng ta cần thay thế các biến thường xuyên cũng như cần thay thế biến nhiều lần?

Đây là lệnh ‘ eval ‘Thực hiện công việc bổ sung thay thế biến nhiều lần trong một tập lệnh. Đây là một ví dụ để làm cho toàn bộ hoạt động rõ ràng như thủy tinh.

Khai báo một biến x , giá trị của nó là 10 .

admin@wsxdn.com:~/Desktop$ declare x=10

Kiểm tra giá trị của biến x , chúng tôi vừa xác định.

admin@wsxdn.com:~/Desktop$ echo $yx

x10

Khai báo một biến y , giá trị của nó là x .

admin@wsxdn.com:~/Desktop$ declare y=x

Kiểm tra giá trị của biến y , chúng tôi vừa xác định.

admin@wsxdn.com:~/Desktop$ echo $y 

x

Đây là vấn đề của BASH thay thế biến một lần, không thực hiện thêm một vòng thay thế biến. Chúng tôi đang sử dụng ‘ eval Lệnh ‘để sửa lỗi này.

admin@wsxdn.com:~/Desktop$ eval y=$x

Bây giờ hãy kiểm tra Giá trị của biến ‘ y ‘.

admin@wsxdn.com:~/Desktop$ echo $y 

10

Tiếng hoan hô! Sự cố đã được khắc phục và ‘ eval ‘Lệnh đã thắng cuộc đua :)

Chưa kể, ‘ eval 'Command rất hữu ích trong các chương trình script lớn và là một công cụ rất tiện dụng.

Phần cuối cùng nhưng không kém phần quan trọng nhất của bài đăng này là các biến được xác định trước BASH. Không! Đừng hoảng sợ khi nhìn thấy danh sách này. Bạn không bao giờ cần phải nhớ toàn bộ danh sách trước khi bắt đầu viết script, ngoại trừ một số. Là một phần của quá trình học tập, chúng tôi đang trình bày Danh sách biến xác định trước BASH.

Không. BIẾN ĐỔI TIỀN MẶT KẾT QUẢ
1 auto_resume Hoàn thành lệnh xử lý cho các công việc đã dừng.
2 TIỀN PATH của shell.
3 BASH_ENV Hiển thị tên của tệp hồ sơ
4 BASH_VERSION Hiển thị phiên bản của Bash
5 BASH_VERSINFO Hiển thị thông tin chi tiết về phiên bản.
6 BASH_VERSINFO [0] Số phiên bản chính (bản phát hành).
7 BASH_VERSINFO [1] Số phiên bản nhỏ (phiên bản).
8 BASH_VERSINFO [2] Cấp bản vá.
9 BASH_VERSINFO [3] Phiên bản xây dựng.
10 BASH_VERSINFO [4] Trạng thái phát hành (ví dụ:beta1).
11 BASH_VERSINFO [5] Giá trị của MACHTYPE.
12 CDPATH Danh sách các thư mục được phân tách bằng dấu hai chấm.
13 CỘT Số ký tự trên mỗi dòng trên đầu ra chuẩn.
14 EUID ID người dùng của người dùng hiện tại.
15 FCEDIT Trình soạn thảo văn bản mặc định cho lệnh fc.
16 FUNCNAME Tên của niềm vui
17 NHÓM Nhóm mà người dùng là Thành viên.
18 LỊCH SỬ Tệp chứa lịch sử lệnh.
19 TRANG CHỦ Tên thư mục chính của bạn.
20 LINES Số dòng ngang trên Đầu ra Chuẩn.
21 MAIL Tên tệp để kiểm tra thư đến
22 OSTYPE Tên của hệ điều hành.
23 OLDPWD Thư mục làm việc trước đó
24 NKT Thư mục làm việc hiện tại
25 NGẪU NHIÊN In một số ngẫu nhiên
26 VỎ Trình bao được ưu tiên sử dụng
27 TIMEFORMAT Định dạng cho lệnh thời gian.
28 UID ID của người dùng hiện tại

Có một danh sách khổng lồ về Biến BASH được xác định trước. Chúng tôi đã cố gắng đưa ra một danh sách những thứ được sử dụng thường xuyên nhất.

Đó là tất cả cho bây giờ. Tôi sẽ ở đây một lần nữa với một bài viết thú vị khác. Cho đến khi tiếp tục theo dõi và kết nối với TecMint . Đừng quên cung cấp cho chúng tôi những phản hồi có giá trị của bạn trong phần bình luận bên dưới.