web-dev-qa-db-fra.com

Créez des variables et attribuez des valeurs via une boucle (bash)

Existe-t-il un moyen de créer des variables Bash et d'assigner des valeurs via une boucle?

Quelque chose dans le sens de:

#!/bin/bash

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

EDIT: Merci à @costas et @MDPC pour indiquer que ce serait une mauvaise alternative à une liste; La question est théorique uniquement.

12
toxefa

Eh bien, vous pouvez absolument utiliser eval comme suit:

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

Ce code créera des variables nommées Var0, Var1, Var2, ... avec chacun en maintenant le nom du fichier. Je suppose que vous aurez une bonne raison pour laquelle vous voulez faire cela à l'aide d'un tableau ...

14
Bichoy

Possible, vous voulez dire un tableau. Il y a des moyens d'attribuer des valeurs

D'abord:

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

Seconde:

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

Troisième:

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

Quatrième:

var=( $(ls) )

Cinquième

...

  1. Il n'est pas nécessaire d'utiliser ls, il suffit de mettre * pour tous les fichiers
  2. à l'intérieur [] les $ signe peut être envoyé
5
Costas