Quais são os caracteres aceitáveis em uma variável bash?
Alguém pode me indicar o local na página de manual bash que descreve o nome aceitável para uma variável bash?
Procurei e encontrei muitas informações (consulte as edições das perguntas), mas não uma resposta clara.
Você pode atribuir valores a variáveis (com
var=value
). Há uma distinção sutil entre um parâmetro e uma variável :e um nome é definido como :
(Essa é a definição no manual do Bash, POSIX provavelmente tem algo semelhante.)
Portanto, qualquer coisa que corresponda ao regex
[a-zA-Z_][a-zA-Z_0-9]*
(assumindo intervalos de caracteres ASCII) é um nome válido para uma variável. Caracteres Unicode e pontuação não funcionam.Esse é praticamente o conjunto de caracteres suportado em nomes de variáveis na maioria das linguagens de programação, embora algumas também suportem Unicode. Palavras que começam com dígitos são consideradas números (observe que coisas como
0xabcd
e123e3
geralmente são números válidos), e o traço geralmente é considerado o operador menos, portanto,a-b
é uma operação aritmética simples de duas variáveis, não uma variável. E assim por diante.Os parâmetros que não têm esse formato são os parâmetros posicionais numerados (argumentos de script/função, atribuíveis com
set
) e os parâmetros especiais . Observe que_
(um único sublinhado) é um dos últimos e, embora você possa atribuí-lo sem erro, não é muito útil, pois é redefinido imediatamente.Estes estão bem:
mas:
Quanto às maiúsculas, há uma lista das variáveis que são especiais para Bash ou outros shells Bourne-ish (ignore as variáveis readline, elas não estão relacionadas aqui). Todos eles parecem começar com uma letra maiúscula, exceto que há
histchars
tudo em minúsculas (!). Felizmente, só importa se a expansão do histórico estiver ativada.