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 và hằng số

Tuy nhiên, có một vấn đề với tập lệnh của chúng tôi. Lưu ý rằng chuỗi “Báo cáo thông tin hệ thống” được lặp lại như thế nào? Với tập lệnh nhỏ của chúng tôi, đó không phải là vấn đề, nhưng hãy tưởng tượng rằng tập lệnh của chúng tôi thực sự dài và chúng tôi có nhiều trường hợp của chuỗi này. Nếu chúng tôi muốn thay đổi tiêu đề thành một cái gì đó khác, chúng tôi sẽ phải thay đổi nó ở nhiều nơi, có thể rất nhiều công việc. Điều gì sẽ xảy ra nếu chúng ta có thể sắp xếp tập lệnh sao cho chuỗi chỉ xuất hiện một lần chứ không phải nhiều lần? Điều đó sẽ làm cho việc bảo trì script trong tương lai dễ dàng hơn nhiều. Đây là cách chúng tôi có thể làm điều đó:



#! / bin / bash


# Chương trình xuất trang thông tin hệ thống


title = "Báo cáo thông tin hệ thống"


tiếng vang "

$ title

$ title

"

#! / bin / bash


# Chương trình xuất trang thông tin hệ thống


title = "Báo cáo thông tin hệ thống"


tiếng vang "

$ title

$ title

"


Bằng cách tạo ra một biến tên tiêu đề và gán cho nó giá trị “Cổng thông tin hệ thống”, chúng ta có thể tận dụng lợi thế của việc mở rộng tham số và đặt chuỗi trong nhiều lưu trữ.

Vì vậy, làm thế nào để chúng ta tạo một biến? Đơn giản, chúng tôi chỉ sử dụng nó. Khi shell gặp một biến thể, nó sẽ tự động tạo ra nó. Điều này khác với nhiều ngôn ngữ lập trình trong đó các biến phải rõ ràng tuyên bố hoặc xác định trước khi sử dụng. Vỏ bọc rất lỏng lẻo về điều này, có thể dẫn đến một số vấn đề. Ví dụ: hãy xem xét kịch bản này được thực hiện trên dòng lệnh:


[tôi @ linuxbox ~] $ foo = "có" [tôi @ linuxbox ~] $ echo $ foo Vâng

[tôi @ linuxbox ~] $ echo $ ngu ngốc


[tôi @ linuxbox ~] $

[tôi @ linuxbox ~] $ foo = "có" [tôi @ linuxbox ~] $ echo $ foo Vâng

[tôi @ linuxbox ~] $ echo $ ngu ngốc


[tôi @ linuxbox ~] $


Đầu tiên chúng tôi gán giá trị “có” cho biến foo, và sau đó hiển thị giá trị của nó với bỏ lỡ. Tiếp theo, chúng tôi hiển thị giá trị của tên biến bị sai chính tả là "ngu ngốc" và nhận được một biểu tượng trống. Điều này là do shell vui vẻ tạo biến đánh lừa khi nó gặp nó, và cho nó giá trị mặc định là không, hoặc trống. Từ điều này, chúng ta học được rằng chúng ta phải chú ý đến chính tả của chúng tôi! Điều quan trọng là phải hiểu những gì thực sự đã xảy ra trong ví dụ này. Từ cái nhìn trước đó của chúng tôi về cách trình bao thực hiện mở rộng, chúng tôi biết rằng lệnh:



[me @ linuxbox ~] $ echo $ foo

[me @ linuxbox ~] $ echo $ foo


trải qua quá trình mở rộng tham số và dẫn đến:



[me @ linuxbox ~] $ echo vâng

[me @ linuxbox ~] $ echo vâng


Trong khi lệnh:



[me @ linuxbox ~] $ echo $ ngu

[me @ linuxbox ~] $ echo $ ngu


mở rộng thành:



[me @ linuxbox ~] $ echo

[me @ linuxbox ~] $ echo


Biến rỗng mở rộng thành hư không! Điều này có thể tàn phá với các lệnh yêu cầu các đối số. Đây là một ví dụ:



[tôi @ linuxbox ~] $ foo = foo.txt [tôi @ linuxbox ~] $ foo1 = foo1.txt [tôi @ linuxbox ~] $ cp $ foo $ ngu

cp: thiếu toán hạng tệp đích sau `foo.txt '

[tôi @ linuxbox ~] $ foo = foo.txt [tôi @ linuxbox ~] $ foo1 = foo1.txt [tôi @ linuxbox ~] $ cp $ foo $ ngu

cp: thiếu toán hạng tệp đích sau `foo.txt '


Hãy thử `cp --help 'để biết thêm thông tin.

Hãy thử `cp --help 'để biết thêm thông tin.


Chúng tôi gán giá trị cho hai biến, foo foo1. Sau đó chúng tôi thực hiện một cp, nhưng viết sai tên của đối số thứ hai. Sau khi mở rộng, cp lệnh chỉ được gửi một lệnh, mặc dù nó yêu cầu hai lệnh.

Có một số quy tắc về tên biến:

1. Tên biến có thể bao gồm các ký tự chữ và số (chữ cái và số) và các ký tự gạch dưới.

2. Ký tự đầu tiên của tên biến phải là một chữ cái hoặc một dấu gạch dưới.

3. Dấu cách và ký hiệu dấu câu không được phép.

Từ "biến" ngụ ý một giá trị thay đổi và trong nhiều ứng dụng, các biến được sử dụng theo cách này. Tuy nhiên, biến trong ứng dụng của chúng tôi, tiêu đề, được sử dụng như một không thay đổi. Hằng số cũng giống như một biến ở chỗ nó có tên và chứa giá trị. Sự khác biệt là giá trị của một hằng số không thay đổi. Trong một ứng dụng thực hiện các phép tính hình học, chúng tôi có thể xác định PI dưới dạng một hằng số và gán cho nó giá trị của 3.1415, thay vì sử dụng số theo nghĩa đen trong suốt chương trình của chúng tôi. Shell không phân biệt giữa các biến và các hằng số; chúng hầu hết là để thuận tiện cho lập trình viên. Một quy ước chung là sử dụng chữ hoa để chỉ định hằng số và chữ thường cho các biến đúng. Chúng tôi sẽ sửa đổi tập lệnh của mình để tuân thủ quy ước này:



#! / bin / bash

# Chương trình xuất trang thông tin hệ thống TITLE= "Báo cáo thông tin hệ thống Đối với $ HOSTNAME"tiếng vang"

$TITLE

$TITLE

"

#! / bin / bash

# Chương trình xuất trang thông tin hệ thống TITLE= "Báo cáo thông tin hệ thống Đối với $ HOSTNAME"tiếng vang"

$TITLE

$TITLE

"


Chúng tôi cũng đã tận dụng cơ hội để làm nổi bật tiêu đề của mình bằng cách thêm giá trị của biến shell

HOSTNAME. Đây là tên mạng của máy.


hình ảnh

Chú thích: Trình bao thực sự cung cấp một cách để thực thi tính bất biến của các quy tắc, thông qua việc sử dụng khai lệnh nội trang với -r (chỉ đọc) tùy chọn. Chúng tôi đã chỉ định TITLE cách này:


tuyên bố -r TITLE = "Tiêu đề trang"


shell sẽ ngăn chặn bất kỳ chuyển nhượng tiếp theo nào cho TITLE. Tính năng này hiếm khi được sử dụng, nhưng nó tồn tại đối với các tập lệnh rất chính thức.


hình ảnh


 

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