Czy istnieje sposób tworzenia zmiennych bash i przypisywania im wartości za pomocą pętli?
Coś w stylu:
#!/bin/bash
c=0
for file in $( ls ); do
var"$c"="$file";
let c=$c+1;
done
EDYCJA: Dziękuję @Costas i @mdpc za wskazanie, że byłaby to zła alternatywa dla listy; pytanie jest tylko teoretyczne.
bash
shell
shell-script
toksefa
źródło
źródło
var"$c"
psuje to. Odpowiedź @Costas pokazuje, jak przypisać wiele wartości do jednej zmiennej listy - tylko teoretycznie pytam, czy zmienne mogą być generowane za pomocą pętli.Odpowiedzi:
Cóż, absolutnie możesz używać eval w następujący sposób:
Ten kod utworzy zmienne o nazwach var0, var1, var2, ... z których każda zawiera nazwę pliku. Zakładam, że będziesz miał dobry powód, aby to zrobić za pomocą tablicy ...
źródło
Możliwe, że masz na myśli tablicę. Istnieje kilka sposobów przypisywania wartości
Pierwszy:
Druga:
Trzeci:
Czwarty:
Piąty
...
ls
, wystarczy umieścić*
wszystkie pliki[]
$
źródło
echo $var
wykonuję polecenia wymienione powyżej, otrzymuję tylko pierwszy plik „wymieniony” przezls
. czy robię coś źle?echo ${var[*]}
(lub${var[@]}
), pojedynczy element można wywołać jakecho ${var[1]}
. Uwaga:$var
jest równy${var[0]}
for v in "${var[@]}";do echo $v;done