Existe-t-il des conventions de dénomination pour les variables dans les scripts shell?

113

La plupart des langues ont des conventions de nommage pour les variables, le style le plus courant que je vois dans les scripts shell est MY_VARIABLE=foo. Est-ce la convention ou est-ce seulement pour les variables globales? Qu'en est-il des variables locales au script?

Garrett Hall
la source
1
Le seul que je connaisse et que tout le monde devrait suivre est que tous les noms en majuscules doivent être réservés au shell. Ne pas les utiliser pour éviter quelque chose d' important accidentellement démolir comme PATHou HOMEou toute autre chose la coquille pourrait réserver à l'avenir.
jw013
3
En fait, tous les noms en majuscules sont généralement utilisés pour les variables d’environnement. Certaines variables (telles que PATH) sont interprétées par le shell, alors que d’autres (telles que LANGUAGE ou PRINTER) peuvent être interprétées par d’autres programmes, mais elles n’ont rien de spécial.
jlp
"variables d'environnement" est en effet le nom propre, je l'inclurai dans ma réponse.
Jippie
Bien que ne faisant pas autorité, ce guide Google contient de bonnes suggestions: google.github.io/styleguide/shell.xml . Il est suggéré de ne respecter que les majuscules pour les constantes et les variables exportées, et le cas de Snake pour tout le reste. Personnellement, j'aime bien les cas de chameaux pour mes globales puisque personne d'autre ne le recommande, ce qui réduit la probabilité de nommer des collisions. De plus, j'aime leur façon de lire.
Phile binaire
1
Question similaire sur SO: Correcte la capitalisation des variables de script Bash et shell .
codeforester

Réponses:

111

Variables d'environnement ou variables shell qui sont introduites par le système d'exploitation ou des scripts de démarrage shell etc sont généralement tous en CAPITALS.

Pour éviter que vos propres variables entrent en conflit avec ces variables, il est recommandé d’utiliser cette méthode lower case.

jippie
la source
32
lower_casetrait de soulignement séparé ou camelCase?
Garrett Hall
3
@ GarrettHall C'est vous qui décidez. Une fois que vous choisissez un bâton avec elle. La cohérence est plus importante que le choix réel.
jw013
2
question de goût? Personnellement, j'aime bien le style C, camelCasecar il est plus court et n'utilise pas le trait de soulignement laid. Goût, style, ...
jippie
19
question de goût? Personnellement, j'aime souligner, séparer, plus facile à lire.
janos
4
Pour être complet, les variables d'environnement ne sont pas la seule catégorie de noms de variables shell classique tout en majuscules - cette règle vaut également pour builtins (comme PWD, PS4ou BASH_SOURCE).
Charles Duffy
62

Oui, il existe des conventions de style de code complètes pour bash, y compris les noms de variables. Par exemple, voici le guide des styles de shell de Google .

En résumé, pour les noms de variables, en particulier:

Noms de variables : minuscules, avec des tirets bas pour séparer les mots. Ex:my_variable_name

Constantes et noms de variable d'environnement : Toutes les majuscules, séparées par des traits de soulignement, déclarées en haut du fichier. Ex:MY_CONSTANT

Anonsage
la source
1
Le lien ci-dessus est maintenant mort, mais je crois que c'est ce à quoi il était lié: google.github.io/styleguide/shell.xml
Sam
1
@Sam, merci. Oui, c'est ça. Il est temps que Google cesse d'utiliser googlecode.com lol
Anonsage
1
Faites- vous toujours ce que Google dit? ;-)
tim.rohrer
1
Ces conventions ne sont que celles de Google pour leurs propres projets open source: bien qu'elles puissent constituer de très bonnes règles, elles ne pourraient pas s'appliquer à tous les projets.
smonff
1

Les soulignés pour séparer les mots semblent être la meilleure voie à suivre.
J'ai quelques raisons de préférer snake_case à camelCase quand je suis libre de choisir:

  1. Flexible: vous pouvez utiliser les majuscules et les minuscules (par exemple, MY_CONSTANTet my_variable);
  2. Cohérent: les chiffres peuvent être séparés pour rendre le numéro plus lisible (par exemple 1_000_000_000) et cette fonctionnalité est prise en charge dans de nombreux langages de programmation;
  3. Common: Commun au point où l’expression rationnelle \wtraite les traits de soulignement, comme les mots et les chiffres ( [a-zA-Z0-9_]).
Isar
la source