Создание переменных и назначение значений через loop (bash)

Есть ли способ создать переменные bash и присвоить их значения через цикл?

Что-то вроде:

#!/bin/bash c=0 for file in $( ls ); do var"$c"="$file"; let c=$c+1; done 

EDIT: Спасибо @Costas и @mdpc за указание, что это будет бедной альтернативой списку; вопрос только теоретический.

  • Как подсчитать вхождения каждого слова, принадлежащего файлу, во все количество файлов `n`, переданных в качестве аргументов?
  • Shell Script (Bash) для редактирования вывода из команды
  • Сценарий Bash - автоматический ввод пользовательского ввода (пароль хранилища ключей)
  • Как распечатать символ ASCII с помощью разных кодовых точек в Bash?
  • rsync - копировать содержимое каталога только в том случае, если определенный файл не существует
  • Сохранить вывод -exec в текстовый файл
  • Мне нужны данные из файла csv, которого нет во втором файле csv
  • Разница в синтаксисе команды find
  • 2 Solutions collect form web for “Создание переменных и назначение значений через loop (bash)”

    Ну, вы абсолютно можете использовать eval следующим образом:

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

    Этот код будет создавать переменные с именами var0, var1, var2, … с каждым, у кого есть имя файла. Я предполагаю, что у вас будет веская причина, по которой вы хотите сделать это, используя массив …

    Возможно, вы имеете в виду массив. Есть несколько способов присвоить значения

    Первый:

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

    Во-вторых:

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

    В третьих:

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

    В-четвертых:

     var=( $(ls) ) 

    пятый

    1. нет необходимости использовать ls , просто поместите * для всех файлов
    2. внутри [] знак $ можно омрачить
    Linux и Unix - лучшая ОС в мире.