Digamos que um tenha uma função/método foo
. Pode-se usar a local
palavra-chave para declarar várias variáveis em uma linha ou elas precisam ser separadas por uma declaração de declaração para cada variável?
foo()
{
local x y z
}
ou
foo()
{
local x
local y
local z
}
E mais:
foo()
{
local -i x -a y z
}
foo()
{
local -i x=2 -a y=() z
}
…
ou a declaração equivalente uma por uma linha.
Sim. Poderia testar, mas por um lado não consigo encontrar nenhuma pergunta/resposta sobre isso e, segundo - pode haver algumas ressalvas ocultas ?
Sim você pode. Uma possível ressalva é SC2155 em que você deve declarar e atribuir separadamente.
Dito isto, funcionará, exceto pelo uso de várias opções de declaração entre os parâmetros. Observe também que os parâmetros de declaração serão aplicados a todas as variáveis (neste caso
-i
).script0:
Resultado:
roteiro1:
Resultado:
Para adicionar à excelente resposta de @jesse_b. Posso confirmar que isso também funciona (e leva em consideração a melhor prática do SC2155 ):