Có quy ước đặt tên cho các biến trong shell script không?


113

Hầu hết các ngôn ngữ đều có quy ước đặt tên cho các biến, kiểu phổ biến nhất tôi thấy trong các kịch bản shell là MY_VARIABLE=foo. Đây có phải là quy ước hay chỉ dành cho các biến toàn cầu? Điều gì về các biến cục bộ cho kịch bản?


1
Cái duy nhất mà tôi biết mà mọi người nên theo dõi là tất cả các tên viết hoa nên được dành riêng cho vỏ. Đừng sử dụng chúng để tránh vô tình clobbering một cái gì đó quan trọng như PATHhoặc HOMEhoặc bất cứ thứ gì vỏ có thể dự trữ trong tương lai.
jw013

3
Trên thực tế, tất cả các tên chữ hoa thường được sử dụng cho các biến môi trường. Một số biến (như PATH) được giải thích bởi shell, trong khi các biến khác (như LANGUAGE hoặc PRINTER) có thể được các chương trình khác diễn giải, nhưng không có gì đặc biệt về chúng.
jlp

"Biến môi trường" thực sự là tên thích hợp, tôi sẽ đưa nó vào câu trả lời của mình.
jippie

Mặc dù không có thẩm quyền, hướng dẫn Google này có các đề xuất tốt: google.github.io/styleguide/shell.xml . Nó đề nghị gắn bó với tất cả các mũ chỉ cho các hằng số và các biến xuất, trường hợp rắn cho mọi thứ khác. Cá nhân tôi thích trường hợp lạc đà cho toàn cầu của tôi vì không ai khác đề nghị nó, điều này làm giảm xác suất đặt tên va chạm. Thêm vào đó tôi thích cách họ đọc.
Phile nhị phân

Câu trả lời:


111

Các biến môi trường hoặc biến shell được giới thiệu bởi hệ điều hành hoặc các kịch bản khởi động shell, v.v. thường là tất cả trong CAPITALS.

Để ngăn chặn các biến của riêng bạn xung đột với các biến này, đó là một cách thực hành tốt để sử dụng lower case.


32
lower_casegạch dưới tách biệt hay camelCase?
Hội trường Garrett

3
@GarrettHall Điều đó hoàn toàn phụ thuộc vào bạn. Một khi bạn chọn một thanh với nó. Tính nhất quán quan trọng hơn sự lựa chọn thực tế.
jw013

2
vấn đề của hương vị? Cá nhân tôi thích phong cách C camelCasevì nó ngắn hơn và không sử dụng dấu gạch dưới xấu xí. Hương vị, phong cách, ...
jippie

19
vấn đề của hương vị? Cá nhân tôi thích gạch dưới tách biệt, dễ đọc hơn.
janos

4
Cho đầy đủ, các biến môi trường không phải là loại duy nhất của tên biến vỏ thông thường tất cả chữ hoa - quy tắc này cũng áp dụng cho builtins (như PWD, PS4hoặc BASH_SOURCE).
Charles Duffy

62

Có, có các quy ước kiểu mã đầy đủ cho bash, bao gồm cả tên biến. Ví dụ: đây là Hướng dẫn về Phong cách Shell của Google .

Như một bản tóm tắt cho các tên biến cụ thể:

Tên biến : Chữ thường, có dấu gạch dưới để phân tách các từ. Ví dụ:my_variable_name

Tên biếnmôi trường liên tục : Tất cả các chữ hoa, được phân tách bằng dấu gạch dưới, được khai báo ở đầu tệp. Ví dụ:MY_CONSTANT


1
Liên kết trên hiện đã chết, nhưng tôi tin rằng đây là những gì nó được liên kết đến: google.github.io/styleguide/shell.xml
Sam

1
@Sam, cảm ơn bạn. Đúng, đó. Đã đến lúc Google ngừng sử dụng googlecode.com lol
Anonsage

1
Bạn luôn làm những gì Google nói không? ;-)
tim.rohrer

1
Các quy ước này chỉ là các quy ước của Google cho các dự án nguồn mở của riêng họ: mặc dù chúng có thể là các quy tắc rất tốt, nhưng nó không thể áp dụng cho tất cả các dự án.
smonff

1

Gạch dưới để tách các từ dường như là cách tốt nhất để đi.
Tôi có một vài lý do để thích sn_case hơn camelCase khi tôi tự do chọn:

  1. Linh hoạt: Bạn có thể sử dụng chữ hoa và chữ thường (ví dụ MY_CONSTANTmy_variable);
  2. Nhất quán: Các chữ số có thể được tách ra để làm cho số dễ đọc hơn (ví dụ 1_000_000_000) và tính năng này được hỗ trợ trong nhiều ngôn ngữ lập trình;
  3. Phổ biến: Phổ biến tại điểm regex \wxử lý các dấu gạch dưới như ký tự từ và số ( [a-zA-Z0-9_]).
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.