Я пытаюсь автоматизировать командный сценарий Unix и направить вывод в mailx, чтобы я мог знать, нужно ли мне вручную редактировать файлы перед их отправкой по FTP. Многое из этого автоматизировано, но из-за ошибки мне нужно вручную приостановить процесс автоматизации, если скрипт обнаруживает определенные данные.
Я пытаюсь запустить скрипт display_orders. После запуска сценария он запрашивает ввод, а затем возвращает вывод. Мне нужно дать сценарию значение TargetSubID, а затем перенаправить вывод в mailx.
username@unix$ display_orders
TargetSubID: BROKERA
Size:
Side:
Symbol:
There were 3 trades found!
TargetSubID, Size, Side и Symbol являются подсказками для ввода. Вы можете либо ввести значение, которое вы хотите найти, либо нажать клавишу ввода, чтобы перейти к следующему запросу. В последнем приглашении скрипт принимает все входные данные и делает их магическими, и возвращает значения, основанные на вводе.
Я пытался делать такие вещи, как:
display_orders << EOD
? BROKERA
?
?
?
?EOD
Но скрипт работает и кажется, что есть проблема с разбором ввода (которую я не ожидаю от вас). Глядя на код для display_orders, он выглядит довольно стандартным Perl, разбивая входные данные и анализируя их.
Я хотел бы просто получить решение командной строки для этого, чтобы я мог добавить его в мои задания cron (плюс мне всегда было любопытно, как автоматизировать консольные приложения на основе ввода).
Я пробовал поискать в Google, но мой Google Fu слабо в этой теме. Я думаю, что просто хочу перенаправить ввод в консольное приложение, но, по-моему, я принципиально не понимаю, как работает оператор <<.
В конце я бы хотел решение, которое могло бы выглядеть примерно так (я понимаю, что это не работает, но это может помочь кому-то понять, что я пытаюсь сделать):
display_orders << BROKERA | mailx -s 'Daily OATS Check' some@email.com