Для python -cорієнтованого рішення та за умови використання оболонки Bash, так, ви можете мати простий однорядковий синтаксис, як у цьому прикладі:
Припустимо, ви хочете зробити щось подібне (дуже схоже на ваш зразок, включаючи except: passінструкцію):
python -c "from __future__ import print_function\ntry: import numpy; print( numpy.get_include(), end='\n' )\nexcept:pass\n" OUTPUT_VARIABLE __numpy_path
Це НЕ буде працювати і не призведе до цієї помилки:
File "<string>", line 1
from __future__ import print_function\ntry: import numpy; print( numpy.get_include(), end='\n' )\nexcept:pass\n
^
SyntaxError: unexpected character after line continuation character `
Це тому, що конкуренція між Bash та Python Interpretation \nвтікачами послідовностей. Щоб вирішити проблему, можна використовувати $'string'синтаксис Bash, щоб змусити \nінтерпретувати Bash перед Питоном. Щоб зробити приклад більш складним, я додав типову end=..\n..специфікацію Python у виклику друку на Python: наприкінці ви зможете отримати BOTH \nінтерпретації від bash та Python, які працюють разом, кожен зі своїм текстом, що викликає занепокоєння. Тож нарешті правильне рішення таке:
python -c $'from __future__ import print_function\ntry:\n import numpy;\n print( numpy.get_include(), end="\\n" )\n print( "Hello" )\nexcept:pass\n' OUTPUT_VARIABLE __numpy_path
Це призводить до правильного чистого виводу без помилок:
/Softs/anaconda/lib/python3.7/site-packages/numpy/core/include
Hello
Зауважте: це повинно добре працювати з execорієнтованими рішеннями, оскільки проблема все одно однакова (конкуренція інтерпретаторів Bash і Python).
Примітка2: можна вирішити проблему, замінивши деякі \nна деякі, ;але вона не працюватиме будь-коли (залежно від конструкцій Python), в той час як моє рішення дозволяє завжди "однолінійно" використовувати будь-який фрагмент класичної багатолінійної програми Python.
Примітка3: звичайно, коли з однією підкладкою завжди слід піклуватися про пробіли Python та відступи, тому що насправді ми тут не суворо "однолицеві", АЛЕ робимо належне змішане управління \nпослідовністю втечі між bash та Python . Ось так ми можемо мати справу з будь-яким твором класичної багаторядкової програми Python. Зразок розчину ілюструє це також.