Eu quero atribuir a string contida em $value
várias variáveis BASH.
Na verdade o exemplo que dei antes ( var1=var2=...=$value
) não estava refletindo exatamente o que eu queria. Até agora, encontrei isso, mas só funciona se $value
for um número inteiro:
$ let varT=varz=var3=$value
Como eu posso fazer isso?
Na minha opinião, é melhor apenas fazer o mais legível:
Mas se você quiser uma maneira muito curta de fazer isso, tente:
Editado : usando expansões de chave em vez de printf e declare em vez de eval, o que pode ser perigoso dependendo do que está em
$value
.Cf. EDIT1: Você ainda pode usar expansões de chave no novo caso:
É mais seguro do que a
printf
abordagem nos comentários porque pode manipular espaços em arquivos$value
.let
está fazendo uma avaliação aritmética. Embash
, isso é equivalente a(( ... ))
. É por isso que seu código só funciona para números inteiros.Usando uma matriz em vez de variáveis com nome especial:
ou uma matriz associativa,
Você também pode fazer um loop:
Este loop faz um loop sobre os nomes das variáveis. No corpo do loop, é criada uma variável de referência de nome que faz referência à variável de loop atual. Quando o valor da variável de referência de nome é definido, a variável nomeada é definida.
você poderia fazer: