Поскольку аргументы командной строки никогда не могут содержать нулевые байты, ваш вопрос по существу предполагает, что ваш ввод не содержит нулевых байтов. В результате простейшим подходом является использование нулевых байтов в качестве разделителя, гарантируя тем самым, что весь ввод будет рассматриваться как отдельный элемент.
Чтобы сделать это, используйте --null
или -0
вариант:
cat foo.py | xargs --null -I % python -c %
Или, более сжато:
xargs -0 python -c < foo.py
То есть, я не могу представить, что это полезно для. Если вы знаете, что у вас будет только один элемент ввода, то зачем вообще использовать xargs
? Почему бы не просто написать
python -c "$(< foo.py)"
?
Не могли бы вы уточнить, что вы пытаетесь достичь? – devnull