Написание скрипта bash

ultrasparc
На сайте с 29.11.2006
Offline
61
445

Здравствуйте

Подскажите в написании скрипта

Есть к примеру файл host.list

содержимое вида

user1 host1 ip1

user2 host2 ip2

user3 host3 ip3

Пишу скрипт с циклом


#!/bin/sh
for i in `cat host.list`;
do
ip=$(echo $i|awk '{print $3}')
echo $ip
done

в итоге получаю пустой результат, а хочется чтобы по циклу мне присваивалось значение ip

где ошибка?

Хостинг в Украине - svai.net
VK
На сайте с 29.12.2011
Offline
42
#1

ultrasparc, Вам нужно двигаться не по словам, а по строкам.

Примерно такой скрипт итерации по строкам с вставкой этих данных в массив:


while IFS=$'\n' read -r line_data; do
myarray[$i]+=$line_data
((++i))
done < $FILENAME

Соответственно вместо того, что внутри цикла можете поставить свой код, заменив $i на $line_data у себя, должно работать. В $FILENAME должен быть путь к файлу для считывания.

ultrasparc
На сайте с 29.11.2006
Offline
61
#2

Дело в том что мне нужно в одном цикле считывать сразу 3 переменные и подставлять их далее в скрипте.

VK
На сайте с 29.12.2011
Offline
42
#3

ultrasparc, в переменной $line_data будет вся строка, разделенная пробелами, дальше Вы можете awk-ом выбирать нужный столбец.

ultrasparc
На сайте с 29.11.2006
Offline
61
#4

Спасибо, все получилось

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий