Страница 1 из 1
Передача параметра curl'у
Добавлено: 2010-04-26 11:21:44
vaikos
Уважаемые гуру.
У меня не получается передать от'grep'епованный параметр curl'у в скрипте (да и в самом шелле)
Код: Выделить всё
#!/bin/sh
grep -o '[0-9]*' | curl -d "param1=username¶m2=$1" http://somedomain.ru/index.php
Сам grep отрабатывает нормально, выдает допустим значение 12345. Мне нужно передать это значение curl'у как param2=12345.
Правильно ли я передаю параметр через param2=$1? Подскажите как правильно сделать такое?
Re: Передача параметра curl'у
Добавлено: 2010-04-26 12:02:52
terminus
Код: Выделить всё
#!/bin/sh
grep -o '[0-9]*' | xargs ONE=
curl -d "param1=username¶m2=$ONE" http://somedomain.ru/index.php

Re: Передача параметра curl'у
Добавлено: 2010-04-26 13:18:11
vaikos
terminus писал(а):Код: Выделить всё
#!/bin/sh
grep -o '[0-9]*' | xargs ONE=
curl -d "param1=username¶m2=$ONE" http://somedomain.ru/index.php

Спасибо, Ваш вариант работает!!!

Заодно я узнал про команду xargs
Остается интересным почему мой вариант не приносит желаемое

Re: Передача параметра curl'у
Добавлено: 2010-04-26 13:46:42
Гость
можно и без xargs
Код: Выделить всё
#!/bin/sh
curl -d "param1=username¶m2=$(grep -o '[0-9]*')" http://somedomain.ru/index.php
Re: Передача параметра curl'у
Добавлено: 2010-04-26 14:14:17
vaikos
Гость писал(а):можно и без xargs
Код: Выделить всё
#!/bin/sh
curl -d "param1=username¶m2=$(grep -o '[0-9]*')" http://somedomain.ru/index.php
Дык, а как в такой конструкции передать входные данные самому
grep'у???
У меня в одной строке
curl передает инфу
grep'у, тот в свою очередь следующему
grep'у, а он уже опять
curl'у

Т.е.:
curl | grep | grep | curl.
И вот второй
grep второму
curl'у через
$1 отдать инфу не может.
Пример с
$1 брал из инета, но там был не
curl, а
awk.
P.S. Два раза использую
grep, ибо
sed и
awk пока раскурить не могу...
Re: Передача параметра curl'у
Добавлено: 2010-04-26 16:18:25
vaikos
vaikos писал(а):terminus писал(а):Код: Выделить всё
#!/bin/sh
grep -o '[0-9]*' | xargs ONE=
curl -d "param1=username¶m2=$ONE" http://somedomain.ru/index.php

Спасибо, Ваш вариант работает!!!

Заодно я узнал про команду xargs
Остается интересным почему мой вариант не приносит желаемое

Ниче не понимаю!!!

Ща пишет:
Re: Передача параметра curl'у
Добавлено: 2010-04-26 16:22:24
terminus
Код: Выделить всё
#!/bin/sh
grep -o '[0-9]*' | xargs set ONE=
curl -d "param1=username¶m2=$ONE" http://somedomain.ru/index.php
Re: Передача параметра curl'у
Добавлено: 2010-04-26 16:34:17
vaikos
terminus писал(а):Код: Выделить всё
#!/bin/sh
grep -o '[0-9]*' | xargs set ONE=
curl -d "param1=username¶m2=$ONE" http://somedomain.ru/index.php
Код: Выделить всё
pc$ echo "1234567890" | grep -o '[3-8]*' | xargs
345678
pc$
Код: Выделить всё
pc$ echo "1234567890" | grep -o '[3-8]*' | xargs set ONE=
xargs: set: No such file or directory
pc$

может у меня че с путями?? Сам
set из шелла пускается нормально.
Re: Передача параметра curl'у
Добавлено: 2010-04-26 19:07:03
Гость
vaikos писал(а):как в такой конструкции передать входные данные самому grep'у?
grep у тя как брал данные со
/dev/stdout так и берет
vaikos писал(а):curl | grep | grep | curl
этого нет в исходном сообщении
ps, не знаю что курит
terminusКод: Выделить всё
$ echo blah | xargs ONE=
xargs: ONE=: No such file or directory
$ echo blah | xargs set ONE=
xargs: set: No such file or directory
пробовал на sh, tcsh, bash, zsh. Присвоение значение переменной не является внешней командой, кою можно подсунуть xargs. Да и xargs всегда ставит пробел после команды.
Re: Передача параметра curl'у
Добавлено: 2010-04-26 19:09:47
Гость
Гость писал(а):как брал данные со /dev/stdout так и берет
пардон, std
in, т.е. напр.
curl блаблабла | твой_скрипт.sh
Re: Передача параметра curl'у
Добавлено: 2010-04-27 6:52:46
x6e6564
Может так:
Код: Выделить всё
echo curl -d "param1=username¶m2=`echo "1234567890" | grep -o '[3-8].*'`" http://somedomain.ru/index.php
curl -d param1=username¶m2=34567890 http://somedomain.ru/index.php
т.е.
Код: Выделить всё
#!/bin/sh
curl -d "param1=username¶m2=`grep -o '[0-9].*'`" http://somedomain.ru/index.php
Re: Передача параметра curl'у
Добавлено: 2010-04-27 14:42:18
vaikos
x6e6564 писал(а):Может так:
Код: Выделить всё
echo curl -d "param1=username¶m2=`echo "1234567890" | grep -o '[3-8].*'`" http://somedomain.ru/index.php
curl -d param1=username¶m2=34567890 http://somedomain.ru/index.php
т.е.
Код: Выделить всё
#!/bin/sh
curl -d "param1=username¶m2=`grep -o '[0-9].*'`" http://somedomain.ru/index.php
Спасибо! Ваш вариант работает! В итоге я сделал так:
Код: Выделить всё
curl -d "param1=username¶m2=`curl ... | grep ... | grep -o '[0-9].*'`" http://somedomain.ru/index.php
Т.е.
curl читает страницу, страница проходит через двойной
grep и полученные данные подсовываются опять
curl'у.
Поставленная задача решена, а я уж хотел начать изучать
Python для этого
