Я хочу создать внутренний цикл внутри цикла со строками, которые читаются из файлов ascii в скрипте bash.У меня есть два входных файла ascii, которые содержат список строк:
files.txt:
filename1
filename2
polls.txt:
CO
NOx
SOx
Я использовал IFS и читал следующее:
while IFS= read -r file; do
printf '%s\n' "$file"
while IFS= read -r poll; do
printf '%s\n' "$poll"
ogrinfo $Database_maindir/$file".shp" -sql "ALTER TABLE $file ADD COLUMN $poll float"
done < "$Database_maindir/polls.txt"
done < "$Database_maindir/files.txt"
Я получаю следующие распечатки и ошибки:
CO
CO
FAILURE:
Unable to open datasource `/home/CO.shp' with the following drivers.
Читает только строку "polls.txt".
Правильный вывод должен быть:
filename1
CO
ogrinfo /home/"filename1.shp" -sql "ALTER TABLE filename1 ADD COLUMN CO float"
NOx
ogrinfo /home/"filename1.shp" -sql "ALTER TABLE filename1 ADD COLUMN NOx float"
Sox
ogrinfo /home/"filename1.shp" -sql "ALTER TABLE filename1 ADD COLUMN Sox float"
filename2
CO
ogrinfo /home/"filename2.shp" -sql "ALTER TABLE filename2 ADD COLUMN CO float"
NOx
ogrinfo /home/"filename2.shp" -sql "ALTER TABLE filename2 ADD COLUMN NOx float"
Sox
ogrinfo /home/"filename2.shp" -sql "ALTER TABLE filename2 ADD COLUMN Sox float"
Итак, для каждого файла (например, имя_файла1, имя_файла2) я хочу выполнить КОМАНДУ (например, команда ogrinfo, которая обновляет столбцы файла)где столбцы - это разные загрязнители, перечисленные в файле polls.txt.
В первом цикле я хочу прочитать строки из файла files.txt и сохранить строку $ file с именем строки (например, filename1). Во втором цикле я хочу прочитать строки из "polls.txt" и сохранить строку $ poll (например, CO).
Однако, похоже, что для первого цикла он читает строку из первого файла.он находит, что означает «polls.txt», поэтому $ file выдает строку «CO».
Как определить, что первый цикл должен читать второй текстовый файл?