Вы не хотите цикл. Вы хотите перебрать все строки в файле. например,
while IFS=\| read col1 col2 col3 etc; do
...
done < text_file
В теле цикла переменные $col1
, $col2
и $col3
будут содержать значения в столбце 1, столбце 2 и столбце 3 соответственно. Переменная $etc
будет содержать столбцы 4 и более (если они есть; вы, вероятно, ожидаете, что $etc
будет пустой строкой). Назовите переменные как хотите, надеюсь, с именами, которые описывают содержание столбцов. Обратите внимание, что мы явно установили IFS
для использования |
в качестве разделителя столбцов, так как read
будет по умолчанию разделяться на пробелы (в зависимости от текущего значения IFS.)