Сценарий:
У меня есть конвейер в bash-скрипте и список некоторых процессов вместе с их аргументами. Я хочу запустить скрипт Python после выполнения каждого процесса (исполняемого) в конвейере, если процесс находится в моем списке.
(Я использую Python 2.7)
Мое предлагаемое решение:
Использование сценария оболочки Python. Я заменил весь исполняемый файл в конвейере своим собственным скриптом Python, который:
1) проверяет процесс, если находится в списке, тогда FLAG = True
2) выполнить процесс с помощью исходного исполняемого файла, используя subprocess.Popen(process.command, shell=True).communicate()
3) если FLAG == True, то сделать что-то.
Проблема:
Использование текущего решения при запуске процесса с использованием
subprocess.Popen().communicate()
, процессы будут выполняться отдельно
и они не могут получить выходные данные внутреннего процесса (дочерний процесс) во внешний процесс (родитель).
Например:
#!/bin/bash
Mean=`P1 $Image1 -M`
P2 "$Image2" $Mean -F
Мы не вывели значение Mean во второй строке исполнения.
Вторая строка будет выглядеть так:
subprocess.Popen("P2 $Image2 \nP1 $Image1 -M -F" , shell=True).communicate()
Следовательно, он возвращает ошибку!
Есть ли в python лучший способ выполнить такой процесс?
Пожалуйста, дайте мне знать, есть ли другие предложения для этого сценария (я очень новичок в bash).