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

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

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

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

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

  • Сценарий Bash для переименования файлов из источника текстового файла
  • Замена процесса bash временным файлом
  • Как эхо-строку с несколькими пробелами в bash «нетронутой»?
  • Скрипт для сравнения с файлами Excel и различиями печати
  • Как поймать сигнал в командной строке?
  • получить части строки, используя сценарий оболочки
  • как быстро подсчитать количество различий в больших потоках?
  • Как загрузить последний файл в папке с помощью scp?
  • 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 - лучшая ОС в мире.