Existem convenções de nomenclatura para variáveis ​​em scripts de shell?


113

A maioria das linguagens possui convenções de nomenclatura para variáveis, o estilo mais comum que vejo nos scripts de shell é MY_VARIABLE=foo. Esta é a convenção ou é apenas para variáveis ​​globais? E as variáveis ​​locais para o script?


1
O único que eu sei e que todos devem seguir é que todos os nomes em maiúsculas devem ser reservados para o shell. Não usá-los para evitar sobrescrever acidentalmente algo importante como PATHou HOMEou qualquer outra coisa a concha pode reservar no futuro.
Jw013 11/07/2012

3
Na verdade, todos os nomes em maiúsculas são normalmente usados ​​para variáveis ​​de ambiente. Algumas variáveis ​​(como PATH) são interpretadas pelo shell, enquanto outras (como LANGUAGE ou PRINTER) podem ser interpretadas por outros programas, mas não há nada de especial nisso.
jlp

'variáveis ​​de ambiente' é realmente o nome próprio, vou incluí-lo na minha resposta.
jippie

Embora não seja autoritário, este guia do Google tem boas sugestões: google.github.io/styleguide/shell.xml . Ele sugere manter todos os limites apenas para constantes e variáveis ​​exportadas, caso de cobra para todo o resto. Pessoalmente, gosto da capa de camelo para os meus globais, já que ninguém mais a recomenda, o que diminui a probabilidade de nomear colisões. Além disso, eu gosto do jeito que eles lêem.
Binary Phile

Respostas:


111

As variáveis ​​de ambiente ou variáveis ​​de shell que são introduzidas pelo sistema operacional ou pelos scripts de inicialização do shell etc. geralmente estão incluídas CAPITALS.

Para evitar que suas próprias variáveis ​​entrem em conflito com essas variáveis, é uma boa prática usar lower case.


32
lower_casesublinhado separado ou camelCase?
Garrett Hall

3
@GarrettHall Isso depende inteiramente de você. Depois de escolher um pedaço de pau com ele. A consistência é mais importante que a escolha real.
Jw013 11/07/2012

2
questão de gosto? Eu pessoalmente gosto do estilo C camelCaseporque é mais curto e não usa o sublinhado feio. Gosto, estilo, ...
jippie

19
questão de gosto? Eu, pessoalmente, gosto de sublinhado separado, mais fácil de ler.
Janos

4
Para completar, variáveis de ambiente não são a única categoria de nomes de variáveis do shell convencionalmente com tudo em maiúsculas - esta regra também se aplica a builtins (como PWD, PS4ou BASH_SOURCE).
Charles Duffy

62

Sim, existem convenções de estilo de código completo para o bash, incluindo nomes de variáveis. Por exemplo, aqui está o Guia de estilos de shell do Google .

Como um resumo para os nomes das variáveis ​​especificamente:

Nomes de variáveis : minúsculas, com sublinhados para separar as palavras. Ex:my_variable_name

Constantes e nomes de variáveis ​​de ambiente : todos os caps, separados por sublinhados, declarados na parte superior do arquivo. Ex:MY_CONSTANT


1
O link acima agora está morto, mas eu acredito que é isso que ela está ligada à: google.github.io/styleguide/shell.xml
Sam

1
@ Sam, obrigado. Sim, é isso. Já era hora de o Google parar de usar o googlecode.com lol
Anonsage 13/05

1
Não que você sempre faz o que Google diz? ;-)
tim.rohrer

1
Essas convenções são apenas do Google para seus próprios projetos de código aberto: embora possam ser regras muito boas, não podem ser aplicadas a todos os projetos.
smonff

1

Sublinhados para separar as palavras parecem ser o melhor caminho a percorrer.
Tenho alguns motivos para preferir snake_case ao invés de camelCase quando posso escolher:

  1. Flexível: Você pode usar maiúsculas e minúsculas (por exemplo, MY_CONSTANTe my_variable);
  2. Consistente: Os dígitos podem ser separados para tornar o número mais legível (por exemplo 1_000_000_000) e esse recurso é suportado em muitas linguagens de programação;
  3. Comum: comum no ponto em que a regex \wlida com sublinhados, como caracteres da palavra e números ( [a-zA-Z0-9_]).
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.