Existe uma maneira de criar variáveis bash e atribuir valores a elas por meio de um loop?
Algo ao longo das linhas de:
#!/bin/bash
c=0
for file in $( ls ); do
var"$c"="$file";
let c=$c+1;
done
EDIT: Obrigado a @Costas e @mdpc por apontar que esta seria uma péssima alternativa a uma lista; a questão é apenas teórica.
bash
shell
shell-script
toxefa
fonte
fonte
var"$c"
quebra isso. A resposta do @Costas demonstra como atribuir vários valores a uma única variável da lista - estou apenas perguntando teoricamente se as variáveis podem realmente ser geradas com um loop.Respostas:
Bem, você pode absolutamente usar eval da seguinte maneira:
Este código criará variáveis denominadas var0, var1, var2, ... com cada uma segurando o nome do arquivo. Presumo que você tenha uma boa razão para fazer isso usando uma matriz ...
fonte
Possível, você quer dizer matriz. Existem algumas maneiras de atribuir valores
Primeiro:
Segundo:
Terceiro:
Quarto:
Quinto
...
ls
, basta colocar*
para todos os arquivos[]
do$
sinal pode ser omitidofonte
echo $var
com os comandos listados acima, só recebo o primeiro arquivo 'listado' porls
. Estou fazendo algo errado?echo ${var[*]}
(ou${var[@]}
), um único elemento pode ser chamado comoecho ${var[1]}
. Nota:$var
é igual${var[0]}
for v in "${var[@]}";do echo $v;done