#python #bash #shell
#python #bash #оболочка
Вопрос:
У меня есть сценарий оболочки (это всего лишь пример, фактический сценарий довольно сложный, поэтому, пожалуйста, рассмотрите все сценарии)
source env.sh
binary1 -a 1 -b 2
binary2 -a 1 -b 2
двоичные файлы 1 и 2 — это функции, предоставляемые сценариями среды
Мне нужно выполнить их с помощью python
В настоящее время я использую это
bashShell = subprocess.Popen(['bash'], shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
_commands = ["source env.sh", "binary1 -a 1 -b 2", "binary2 -a 1 -b 2"]
_commands.append("exit")
for cmd in self._commands:
bashShell.stdin.write("%sn" % cmd)
bashShell.communicate()
Что это делает, так это открывает оболочку bash с помощью подпроцесса и сразу записывает все входные данные в stdin.
выполнение binary1 занимает много времени. Будут ли какие-либо неблагоприятные последствия, если я напишу команду binary2 в stdin подпроцесса bash, в то время как команда binary1 все еще выполняется?
Важно выполнять их в одной оболочке, поскольку сценарии среды предоставляют некоторые функции. Спасибо.
Комментарии:
1. Нет, побочных эффектов нет. Он просто буферизуется в канале, пока оболочка не завершит первую команду и не прочитает из канала.
2. Вы также можете отправить все это в виде одной строки с командами, разделенными
;
символом .