#python #pipe #command-line-arguments
#python #канал #аргументы командной строки
Вопрос:
Я устанавливаю poetry
с помощью get-poetry.py
скрипта и хочу указать версию для установки. Чтобы установить последнюю версию, я делаю
GET_POETRY_URL=https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py
curl -sSL $GET_POETRY_URL | python
get-poetry.py
Скрипт принимает аргумент --version
, но как мне его передать?
curl -sSL $GET_POETRY_URL | python --version 1.1.4
печатает установленную версию python, а не передает аргумент get-poetry.py
скрипту. Я мог бы сохранить скрипт в файл и вызвать его таким образом, но я делаю это в образе docker, и я не хочу иметь дело с его очисткой впоследствии.
Ответ №1:
curl -sSL $GET_POETRY_URL | python - --version 1.1.4
Использование -
в качестве местоположения скрипта при вызове python
приведет к чтению из стандартного интерфейса. Как обычно, любые аргументы после расположения скрипта передаются сценарию:
$ echo "import sys; print(sys.argv)" | python - --version 1.1.4
['-', '--version', '1.1.4']
Использование -
для обозначения stdin также работает для многих других инструментов unix:
$ echo hello | cat -
hello