Я пытаюсь в течение нескольких часов и исследую, как передать переменную оболочки, возвращаемую из Pythonscript, в другой сценарий оболочки для запуска другого сценария Python.
У меня есть пример ниже:
MyRule:
export VAR=$(shell python.exe mySkript1.py someInputs); \
echo $$VAR; \
$(shell python.exe mySkript2.py someInputs2 $VAR}) \
echo $$VAR;
Как передать переменную VAR во вторую строку оболочки?
Я попробовал следующее, но ни один из них не сделал этого:
"$VAR"
$$VAR
$(VAR)
.
🤔 А знаете ли вы, что...
Синтаксис Python известен своей простотой и читаемостью.
Переменная Makefile $VAR
отсутствует, поэтому она заменяется пустой строкой.
В любом случае, не используйте $(shell ...)
в рецептах.
MyRule:
export VAR=$$(python.exe mySkript1.py someInputs); \
echo $$VAR; \
python.exe mySkript2.py someInputs2 "$$VAR"; \
echo "$$VAR"
Вы можете использовать переменные make и сделать:
VAR=$(shell python.exe mySkript1.py someInputs)
MyRule:
python.exe mySkript2.py someInputs2 "$(VAR)"
В версии GNU-Make, которую я сейчас использую, VAR не расширяется, если это не необходимо, поэтому запуск других рецептов не обязательно приведет к ненужному выполнению python.exe, но я не уверен, что другие версии make будут делать.
Будет ли это хорошей идеей для вашего варианта использования, будет зависеть от того, будет ли это хорошей идеей для вашего варианта использования.