Количество циклов выполнения в соответствии с количеством строк в текстовом файле (Unix Shell Scripting) - PullRequest
0 голосов
/ 13 мая 2019

У меня есть несколько строк в текстовом файле. Пример: у меня есть 3 строки в текстовом файле и

Emp_Table_Columns.txt|Employee_Temp.csv|Emp.csv
Dep_Table_Columns.txt|Dep_Temp.csv|Dep.csv
Line_Table_Columns.txt|Line_Temp.csv|Line.csv

Я хочу запустить цикл FOR (или любой другой цикл) 3 раза, а во время работы я хочу передать значения Поле 1, Поле 2, поле 3 в переменные.

Допустим, работает 1-й цикл, тогда я буду читать Emp_Table_Columns.txt. Если 2-й цикл работает, я буду читать Dep_Table_Columns.txt. Пожалуйста, помогите мне с некоторыми предложениями в Shell Script или Linux.

1 Ответ

1 голос
/ 13 мая 2019

Вы не хотите цикл. Вы хотите перебрать все строки в файле. например,

while IFS=\| read col1 col2 col3 etc; do 
   ...
done < text_file

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...