@YaroslavKleyno

Нужна помощь с перенаправлением в bash. Куда копать?

Добрый день! Задача простая, и все должно по идее работать, но немного не получается.
Есть bash скрипт, в нем одна переменная
Нужно забирать с сервера txt файл и парсить эту переменную при помощи трубы команд, которые написаны в этом файле

В консоли я делаю так:

asterisk -rx 'gsm send ussd 1 *112*1#' | cut -d' ' -f2 | tail -n 1 | awk -F ":" '{print $1}'
1156


все работает

теперь я беру
cut -d' ' -f2 | tail -n 1 | awk -F ":" '{print $1}' и помещаю в файл на сервере http://192.168.240.47/ussdkstregexp.txt


и выполняю:
asterisk -rx 'gsm send ussd 1 *112*1#' | `wget -qO- http://192.168.240.47/ussdkstregexp.txt`

и не работает.
в чем может быть проблема?
  • Вопрос задан
  • 146 просмотров
Пригласить эксперта
Ответы на вопрос 2
@AlexanderKomarchouk
программист PHP, embedded atmega/stm32
Ярослав, когда вы выполняете команду
wget -qO- http://192.168.240.47/ussdkstregexp.txt
то программа wget (GNU Wget is a free utility for non-interactive download of files from the Web) загружает указанный файл с веб сервера, и с учетом ключа -O- выводит его содержимое на стандартный вывод (stdout).
Поэтому, если вы хотите полученные данные, загруженные из файла на веб сервере, и выведенные на stdout, использовать далее, то просто через конвейер передайте вывод wget на следующую команду:
wget -qO- http://192.168.240.47/ussdkstregexp.txt | next_command
Ответ написан
Комментировать
@pfg21
ex-турист
имхо большой изврат делать хитрож***ые однострочники, хотя теоретически можно сделать такой однострочник, помухлевав с потоками.
минус один его мало кто поймет его, да и сам через месяц будешь мозговать "что же я такое сделал"

может просто asterisk -rx 'gsm send ussd 1 *112*1#' | cut -d' ' -f2 | tail -n 1 | awk -F ":" '{print $1}' засунуть в файл,
тогда можно его качать и перенаправлять в bash, баш отработает команды из потока.
будет гораздо проще в понимании работы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы