while IFS=':' read -r hostname db location
do
set -- hostname="$hostname" db="$db" location="$location"
command1 "$@"
command2 "$@"
done <file.txt
Или, если вам нужно сохранить позиционные параметры,
while IFS=':' read -r hostname db location
do
command1 hostname="$hostname" db="$db" location="$location"
command2 hostname="$hostname" db="$db" location="$location"
done <file.txt
Оба они будут считывать file.txt
построчно, и для каждой строки считывать три:
-поля с разделителями в три переменные hostname
, db
и location
. Если в какой-либо строке есть больше полей с разделителями :
-, они будут добавлены к значению location
.
Затем выполняются команды.