Чи є умови іменування змінних у скриптах оболонки?


113

Більшість мов мають умови іменування змінних. Найпоширеніший стиль, який я бачу в скриптах оболонки, - це MY_VARIABLE=foo. Це умова чи це лише глобальні змінні? Що щодо змінних, локальних для сценарію?


1
Єдине, за яким я знаю, якого слід дотримуватися всім, - всі великі імена мають бути зарезервовані для оболонки. Не використовуйте їх , щоб уникнути випадкового затирання що - то важливе , як PATHабо HOMEчи що - небудь ще оболонка може зарезервувати в майбутньому.
jw013

3
Насправді, всі великі імена зазвичай використовуються для змінних середовища. Деякі змінні (наприклад, PATH) інтерпретуються оболонкою, тоді як інші (як LANGUAGE або PRINTER) можуть бути інтерпретовані іншими програмами, але нічого іншого особливого в них немає.
jlp

"змінні середовища" - це справді власне ім'я, я включу його у свою відповідь.
джиппі

Цей посібник Google, хоча не є авторитетним, має хороші пропозиції: google.github.io/styleguide/shell.xml . Він пропонує дотримуватися всіх обмежень лише для констант та експортованих змінних, а змія - для всього іншого. Особисто мені подобається кейс верблюда для моїх глобальних, оскільки ніхто більше не рекомендує його, що знижує ймовірність назвати зіткнення. Плюс мені подобається те, як вони читають.
Бінарний Філі

Відповіді:


111

Змінні середовища або змінні оболонки, які вводяться операційною системою або сценаріями запуску оболонки тощо, зазвичай є все CAPITALS.

Щоб ваші власні змінні не конфліктували з цими змінними, це корисна практика lower case.


32
lower_caseпідкреслення розділено або camelCase?
Гарретт Холл

3
@GarrettHall Це повністю залежить від вас. Як тільки ви виберете одну паличку з нею. Послідовність важливіша, ніж власне вибір.
jw013

2
питання смаку? Мені особисто подобається C-стиль, camelCaseоскільки він коротший і не використовує потворного підкреслення. Смак, стиль, ...
jippie

19
питання смаку? Мені особисто подобається виділення підкреслення, легше читати.
janos

4
Для повноти картини , змінні оточення не є єдиною категорією імен змінних , зазвичай все прописні оболонки - це правило поширюється також на вбудовані команди (наприклад PWD, PS4чи BASH_SOURCE).
Чарльз Даффі

62

Так, існує повний режим стилів коду для bash, включаючи імена змінних. Наприклад, ось керівництво Google щодо стилю оболонки Google .

Як підсумок конкретно імен змінних:

Імена змінних : Малі регістри, з підкресленнями окремих слів. Наприклад:my_variable_name

Імена змінних констант і середовища : Усі знаки, розділені підкресленнями, оголошені у верхній частині файлу. Наприклад:MY_CONSTANT


1
Наведене вище посилання тепер мертве, але я вважаю, що це те, з чим воно пов’язане: google.github.io/styleguide/shell.xml
Сем

1
@Sam, дякую. Так, що це. Пора Google перестала використовувати googlecode.com lol
Anonsage,

1
Як ви завжди робити те , що говорить Google? ;-)
tim.rohrer

1
Ця умова є лише Google для власних проектів з відкритим кодом: хоча вони можуть бути дуже хорошими правилами, вони не можуть застосовуватися до всіх проектів.
smonff

1

Підкреслення окремих слів, здається, є найкращим способом.
У мене є кілька причин, коли я віддаю перевагу зміїному колу перед camelCase, коли я вільний у виборі:

  1. Гнучка: Ви можете використовувати великі та малі регістри (наприклад, MY_CONSTANTта my_variable);
  2. Послідовно: цифри можна розділити, щоб зробити число більш читабельним (наприклад 1_000_000_000), і ця функція підтримується у багатьох мовах програмування;
  3. Загальне: загальне в точці, де регекс \wобробляє підкреслення, такі як символи слова та цифри ( [a-zA-Z0-9_]).
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.