Gibt es eine Möglichkeit, Bash-Variablen zu erstellen und diese über eine Schleife zuzuweisen?
Etwas in der Art von:
#!/bin/bash
c=0
for file in $( ls ); do
var"$c"="$file";
let c=$c+1;
done
EDIT: Vielen Dank an @Costas und @mdpc für den Hinweis, dass dies eine schlechte Alternative zu einer Liste wäre. Die Frage ist nur theoretisch.
bash
shell
shell-script
Toxefa
quelle
quelle
var"$c"
bricht es. Die Antwort von @Costas zeigt, wie einer einzelnen Listenvariablen mehrere Werte zugewiesen werden. Ich frage nur theoretisch, ob Variablen tatsächlich mit einer Schleife generiert werden können .Antworten:
Nun, Sie können eval wie folgt verwenden:
Dieser Code erstellt Variablen mit den Namen var0, var1, var2, ..., wobei jede den Dateinamen enthält. Ich gehe davon aus, dass Sie einen guten Grund haben werden, dies über die Verwendung eines Arrays zu tun ...
quelle
Möglicherweise meinst du Array. Es gibt verschiedene Möglichkeiten, Werte zuzuweisen
Zuerst:
Zweite:
Dritte:
Vierte:
Fünfte
...
ls
, nur*
für alle Dateien zu setzen[]
des$
Schildes kann weggelassen werdenquelle
echo $var
die oben aufgeführten Befehle verwende, erhalte ich nur die erste Datei, die von aufgelistet wurdels
. Mache ich etwas falsch?echo ${var[*]}
(oder${var[@]}
), kann ein einzelnes Element wie aufgerufen werdenecho ${var[1]}
. Hinweis:$var
ist gleich${var[0]}
for v in "${var[@]}";do echo $v;done