Страница 1 из 1

Передача параметра curl'у

Добавлено: 2010-04-26 11:21:44
vaikos
Уважаемые гуру.
У меня не получается передать от'grep'епованный параметр curl'у в скрипте (да и в самом шелле)

Код: Выделить всё

#!/bin/sh
grep -o '[0-9]*' | curl -d "param1=username&param2=$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&param2=$ONE" http://somedomain.ru/index.php
:unknown:

Re: Передача параметра curl'у

Добавлено: 2010-04-26 13:18:11
vaikos
terminus писал(а):

Код: Выделить всё

#!/bin/sh
grep -o '[0-9]*' | xargs ONE=
curl -d "param1=username&param2=$ONE" http://somedomain.ru/index.php
:unknown:
Спасибо, Ваш вариант работает!!! :drinks:
Заодно я узнал про команду xargs :smile:

Остается интересным почему мой вариант не приносит желаемое :unknown:

Re: Передача параметра curl'у

Добавлено: 2010-04-26 13:46:42
Гость
можно и без xargs

Код: Выделить всё

#!/bin/sh
curl -d "param1=username&param2=$(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&param2=$(grep -o '[0-9]*')" http://somedomain.ru/index.php
Дык, а как в такой конструкции передать входные данные самому grep'у??? :smile:

У меня в одной строке curl передает инфу grep'у, тот в свою очередь следующему grep'у, а он уже опять curl:pardon:
Т.е.: 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&param2=$ONE" http://somedomain.ru/index.php
:unknown:
Спасибо, Ваш вариант работает!!! :drinks:
Заодно я узнал про команду xargs :smile:

Остается интересным почему мой вариант не приносит желаемое :unknown:
Ниче не понимаю!!! :st:
Ща пишет:

Код: Выделить всё

xargs: ONE=: No such file or directory

Re: Передача параметра curl'у

Добавлено: 2010-04-26 16:22:24
terminus

Код: Выделить всё

#!/bin/sh
grep -o '[0-9]*' | xargs set ONE=
curl -d "param1=username&param2=$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&param2=$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$
:unknown: может у меня че с путями?? Сам 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 так и берет
пардон, stdin, т.е. напр.
curl блаблабла | твой_скрипт.sh

Re: Передача параметра curl'у

Добавлено: 2010-04-27 6:52:46
x6e6564
Может так:

Код: Выделить всё

echo curl -d "param1=username&param2=`echo "1234567890" | grep -o '[3-8].*'`" http://somedomain.ru/index.php
curl -d param1=username&param2=34567890 http://somedomain.ru/index.php
т.е.

Код: Выделить всё

#!/bin/sh
curl -d "param1=username&param2=`grep -o '[0-9].*'`" http://somedomain.ru/index.php

Re: Передача параметра curl'у

Добавлено: 2010-04-27 14:42:18
vaikos
x6e6564 писал(а):Может так:

Код: Выделить всё

echo curl -d "param1=username&param2=`echo "1234567890" | grep -o '[3-8].*'`" http://somedomain.ru/index.php
curl -d param1=username&param2=34567890 http://somedomain.ru/index.php
т.е.

Код: Выделить всё

#!/bin/sh
curl -d "param1=username&param2=`grep -o '[0-9].*'`" http://somedomain.ru/index.php
Спасибо! Ваш вариант работает! В итоге я сделал так:

Код: Выделить всё

curl -d "param1=username&param2=`curl ... | grep ... | grep -o '[0-9].*'`" http://somedomain.ru/index.php
Т.е. curl читает страницу, страница проходит через двойной grep и полученные данные подсовываются опять curl'у.
Поставленная задача решена, а я уж хотел начать изучать Python для этого :smile: