Как интегрировать несколько сценариев Python / Perl для исполнения в одном сценарии bash?

У меня есть следующие скрипты Perl (хотя это относится и к Python и другим языкам сценариев): script1.pl , script2.pl , script3.pl

Способ написания этих сценариев, пользователи выполняют их с входными флагами, а выход – это файл.

 perl script1.pl --i input1.tsv ## this outputs the file `outputs1` perl script2.pl --i outputs1 ## this outputs the file `outputs2` perl script3.pl --i outputs2 ## this outputs the file `final_output` 

Теперь я хотел бы создать исполняемый скрипт bash, который позволяет пользователям просто работать с input1 и получать выходные данные в final_output .

Вот как я мог бы сделать это только с одним скриптом perl, execute.sh :

 #!/bin/sh source ~/.bash_profile FLAG1="--i=$1" perl script1.pl $FLAG1 

который можно запустить в командной строке execute.sh input1.tsv

Для моего примера с тремя сценариями, как я мог бы execute.sh промежуточные выходы в промежуточные скрипты, чтобы создать один скрипт execute.sh , например, outputs1 в script2.pl , а затем outputs2 в scripts3.pl и т. Д.?

Разве нет способа сделать это, не переписывая скрипты perl / python?

  • Как играть простые заметки, такие как звук ding-dang в терминале
  • SSH завершает работу после выхода из сценария bash
  • Проблема при попытке простого цикла в bash
  • Каково первое событие / файл / журнал в Linux, который появляется / изменяется при загрузке, сигнализируя о том, что сеть работает?
  • Вставить текст в другое приложение из сценария через ярлык
  • Отправить вложение в gmail id из сценария оболочки
  • Поток FFMPEG не появится на Justin.tv
  • Как передать переменные команде awk с условиями?
  • 2 Solutions collect form web for “Как интегрировать несколько сценариев Python / Perl для исполнения в одном сценарии bash?”

    Три строки, которые вы написали, чтобы продемонстрировать, что вы хотите, являются допустимым сценарием bash : сценарий представляет собой не что иное, как последовательность команд, выполняемых друг за другом оболочкой.

    Единственный дополнительный код, который вы, возможно, захотите, – это что-то, чтобы очистить временные файлы, созданные script1.pl и script2.pl . Кроме того, вы можете использовать абсолютные пути для указания script{1,2,3}.pl live.

     #!/bin/sh trap 'rm outputs1 outputs2' EXIT perl script1.pl --i "$1" perl script2.pl --i outputs1 perl script3.pl --i outputs2 

    $1 представляет значение первого аргумента, переданного скрипту, поэтому он будет вызываться с

     execute.sh input1.tsv 

    по желанию.

    Вы не можете настроить каналы между тремя сценариями, потому что они кажутся жестко закодированными для создания определенных выходных файлов.

    Предполагая, что выходные файлы создаются локально, т.е. в каталоге, где находится скрипт, вы можете попробовать запустить сценарии во временном рабочем каталоге, к которому вы можете скопировать скрипты перед их исполнением и в которых никакие другие процессы не будут создавать файлы. Затем вы сможете контролировать и управлять новыми файлами, созданными отдельными сценариями.

    Вы можете создать временный каталог в каталоге /tmp или в каталоге активного пользователя. Добавьте к концу скрипта команду, которая приведет к срыву директории. Если вы хотите, чтобы любые выходные файлы сохранялись в другом месте, вы можете скопировать их в нужное время в нужное место.

    Interesting Posts

    Переадресация портов с помощью iptables и PIA VPN для одного пользователя

    Отключить автоматическое обнаружение RAID во время выполнения

    Работа в Cron только за 7 дней, за которой не следует несколько недель

    Почему эти псевдонимы терпят неудачу?

    Не удается подключиться к MySql с помощью PHP на Linux

    Solaris – получить список команд, запущенных при запуске / загрузке?

    Почему в некоторых системах Linux корневая файловая система отображается как / dev / root вместо / dev / <real device node> в mtab?

    Remmina не работает с клавиатурой при удаленном подключении

    Стратегии шифрования файлов userland без FDE

    Поиск деловой даты в пределах диапазона

    Печать чередующихся строк с условными

    «Нет больше PTY» при запуске экрана в качестве пользователя без root

    Трубчатые фрагменты документа с помощью различных команд

    Как перенаправить резервный сетевой интерфейс через туннель SSH?

    Команда для установки заголовков Linux не выполняется

    Linux и Unix - лучшая ОС в мире.