URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 7869
[ Назад ]

Исходное сообщение
"Получение переменных"

Отправлено maxwell , 30-Янв-09 08:13 
Всем доброго времени суток.

Есть файл file

1001 192.168.20.1
1002 192.168.31.78
1003 192.168.29.57

Надо прочитать этот файл построчно и получить следующие переменные

$1=(значение в первом столбце)
$2=(значение IP адреса из второго столбца)

И эти переменные потом дальше обрабатывать в скрипте

Пробовал так


#!/bin/sh
exec < file
while read string
do
  echo $string
done
exit 0

то есть построчно считывается, а вот как получить переменные?

Содержание

Сообщения в этом обсуждении
"Получение переменных"
Отправлено allez , 30-Янв-09 08:51 
>Пробовал так
 
>#!/bin/sh
>exec < file
>while read string
>do
>  echo $string
>done
>exit 0

>то есть построчно считывается, а вот как получить переменные?


#!/bin/sh
while read var1 var2
do
  echo "var1 = $var1, var2 = $var2"
done < file


"Получение переменных"
Отправлено maxwell , 30-Янв-09 09:40 
Спасибо вам!

Да, все правильно, конечно сам ступил.
А все было так просто.
Был рабочий вариант одного скрипта, в нем и обрабатывались переменные, а переменные там были заданы в виде $1 $2 $3 и т.д.
Но дело в том, что командный интерпретатор обрабатывает в командной строке аргументы в виде специальных переменных $1-$9
Вот я и наступил на грабли, пытаясь в скрипте получить именно переменные $1 $2
В момем случае все оказалось проще, нужно было передать скрипту сразу всю строку в виде аргумента, а не городить огород, разбирая строку на части.


"образование в неоплатном долгу"
Отправлено Andrey Mitrofanov , 30-Янв-09 09:51 
>Был рабочий вариант одного скрипта, в нем и обрабатывались переменные, а переменные
>там были заданы
>Но дело в том, что командный интерпретатор обрабатывает
>Вот я и наступил на грабли, пытаясь в скрипте получить именно переменные
>В момем случае все оказалось проще, нужно было передать скрипту сразу всю

Говорили ж учителя, что списывать нехорошо и учиться надо. Не поверил?... :(((