Есть ли способ создать переменные bash и присвоить им значения через цикл?
Что-то вроде:
#!/bin/bash
c=0
for file in $( ls ); do
var"$c"="$file";
let c=$c+1;
done
РЕДАКТИРОВАТЬ: Спасибо @Costas и @mdpc за указание, что это будет плохой альтернативой списку; вопрос только теоретический.
bash
shell
shell-script
toxefa
источник
источник
var"$c"
ломает это. Ответ @Costas демонстрирует, как назначить несколько значений одной переменной списка - я просто теоретически спрашиваю, могут ли переменные действительно генерироваться с помощью цикла.Ответы:
Ну, вы можете использовать eval следующим образом:
Этот код создаст переменные с именем var0, var1, var2, ..., каждая из которых содержит имя файла. Я предполагаю, что у вас будет веская причина, по которой вы хотите сделать это, используя массив ...
источник
Возможно, вы имеете в виду массив. Есть несколько способов присвоить значения
Первый:
Во-вторых:
Третий:
В-четвертых:
пятый
...
ls
, просто положить*
для всех файлов[]
$
источник
echo $var
с командами, которые вы перечислили выше, я получаю только первый файл в спискеls
. Я делаю что-то неправильно?echo ${var[*]}
(или${var[@]}
), один элемент можно назвать какecho ${var[1]}
. Примечание:$var
равно${var[0]}
for v in "${var[@]}";do echo $v;done