Как я передаю содержание файла как параметр командной строки

Virtualenv является определенно удачей здесь.

В моей установке у меня есть переменная среды VIRTUALENV_USE_DISTRIBUTE набор к 1, так, чтобы более современные Распределили пакет, используется вместо setuptools. Я создал виртуальные среды для двух версий Python в моей системе как так:

$ virtualenv -p python2.6 py2
$ virtualenv -p python3.2 py3

Я затем создал три псевдонима в .bashrc:

alias py2='source $HOME/py2/bin/activate'
alias py3='source $HOME/py3/bin/activate'
alias idle='python -m idlelib.idle'

Таким образом я могу использовать py2 переключаться на значение по умолчанию Python 2.6 и py3 переключаться на значение по умолчанию Python 3.2. Ввод idle будет работать, какой бы ни версия НЕАКТИВНЫХ подходит для виртуальной среды, в которой я нахожусь.

Установка пакетов в одну из этих виртуальных сред обычно просто включает a pip install команда.

5
11.12.2012, 21:45
2 ответа

Это может быть сделано с помощью замены команды, как так:

mvn -Dvar_name="$(cat /path/to/file)" # POSIX
mvn -Dvar_name="$(</path/to/file)"    # bash

Это имеет известный протест, тем не менее, а именно, что разделяются все запаздывающие новые строки. Если это не имеет значения, тем не менее, затем, что это должно работать.

Если Вы действительно просто хотите считать одну строку, Вы могли бы использовать read вместо этого, как так:

IFS= read -r line < /path/to/file
mvn -Dvar_name="$line"
9
27.01.2020, 20:32

Для замены команды необходимо использовать $() или обратные галочки ''.

Также важно, чтобы Вы заключили замену в кавычки, или это расширится в несколько аргументов, если файл будет содержать больше чем одно слово. Вот некоторые примеры:

mvn -Dvar_name="$(< /path/to/file)" # bash

mvn -Dvar_name="$(cat /path/to/file)" # POSIX
6
27.01.2020, 20:32

Теги

Похожие вопросы