Как интегрировать несколько сценариев 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?

  • Печать последнего символа в указанном пути
  • Ошибка в простом скрипте bash - mv + awk
  • Использование rename для удаления '.orig' из файла и добавления '_1' в basename
  • Резервное копирование большого файла
  • Замена подстроки в файле a строкой в ​​файле b при совпадении
  • Сравнение столбцов в двух файлах и добавление первого файла
  • как удалить ssh предупреждение в сценарии оболочки
  • Восстановление опции в конце функции в zsh
  • 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

    Восстановление из установки оболочки root в плохой файл

    Моя книга по сертификации Linux рассказывает о rcatd, но у меня ее нет

    hcidump не получает пакеты данных в Ubuntu 14.04?

    Интерактивный ssh ​​работает, но не rsync или scp, на OSX

    Замените точки символами подчеркивания в именах файлов, оставив неизменным

    Копировать только Конкретный текст файла в другой

    Извлеките строки из файла containg From <str1> To <str2>

    rdesktop: ошибка при загрузке разделяемых библиотек

    Есть ли ярлык для повторения второй команды proximate в bash?

    Минимизировать зарезервированное пространство на томе ext4 без больших файлов

    Как сохранить статус последнего выхода после теста

    Loop в скрипте на удаленном сервере не работает

    Сравните значения столбца со всеми значениями в другом столбце

    Измените устройство hidraw с мыши на джойстик

    Может ли файл (например, изображение PNG) изнашиваться, если он передается через SSH (scp) 1000 раз взад и вперед?

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