Crie variáveis e atribua valores via loop (bash)

9

Existe uma maneira de criar variáveis bash e atribuí-las valores através 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 alternativa ruim para uma lista; a questão é apenas teórica.

    
por py4on 18.04.2015 / 21:24

2 respostas

11

Bem, você pode usar eval da seguinte maneira:

c=0
for file in $( ls ); do
    eval "var$c=$file";
    c=$((c+1));
done

Este código irá criar variáveis chamadas var0, var1, var2, ... com cada uma segurando o nome do arquivo. Eu suponho que você terá um bom motivo para fazer isso usando uma matriz ...

    
por 19.04.2015 / 08:00
5

Possivelmente você quer dizer array. Existem algumas maneiras de atribuir valores

Primeiro:

c=0
for file in $( ls ); do
    var[$c]="$file";
    c=$(($c+1));
done

Segundo:

c=0
for file in $( ls ); do
    var[c++]="$file";
done

Terceiro:

for file in $( ls ); do
    var[${#var}]="$file";
done

Quarto:

var=( $(ls) )

Quinto

...

  1. não é necessário usar ls , basta colocar * para todos os arquivos
  2. dentro de [] o sinal $ pode ser omitido
por 18.04.2015 / 21:47