LINUX.ORG.RU

awk не работает с переменной

 ,


0

2

Всем привет!

Возможно глупый вопрос, за это простите. Итак, имеется файл .login, записи в котором вида:

blah blah user 10.10.0.1 someuser
blah blah password 10.10.0.1 somepass

В одном из параметров в .sh-скрипт передается ip-адрес (например, 10.10.0.1), а в скрипте необходимо вытащить в переменные логин и пароль.

Примерно так:

USERNAME=$(awk '/user $IP/ {print $5}' $FILE)

Но после выполнения вывод $USERNAME дает пустую строку, но если в скрипте поставить вместо $IP 10.10.0.1, то все ок.

ПС переменная IP не пуста и значение читается правильно. Переменная FILE - также правильная - полный путь до файла+имя файла



Последнее исправление: mormori0n (всего исправлений: 2)

В одинарных прямых кавычках переменные не раскрываются, awk ищет строку $IP вместо значения.

sin_a ★★★★★
()
USERNAME=$(awk -v address="$IP" '/user $address/ {print $5}' $FILE)
nerve ★★
()

Если у вас действительно такая простая задача, то awk тут совсем не нужен.

while read blah1 blah2 user ip p; do [ "x$ip" = "x$IP" ] && USERNAME=$p && break; done < $FILE
vodz ★★★★★
()
Последнее исправление: vodz (всего исправлений: 2)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.