Как передать переменную Python в Bash?

1

Как передать переменную Python в оболочку Bash? Он должен работать следующим образом: foo="./RetVar.py 42"

Замените двойные кавычки на `s

Я пробовал печатать и sys.exiting результат, но безрезультатно. Как я мог бы выполнить свою задачу?

Теги:

3 ответа

8
Лучший ответ
foo="$(scriptthatprintssomething)"

Что это. print. Или sys.stdout.write(). Или т.п. Если script не является исполняемым, вам нужно явно указать интерпретатор.

foo="$(python scriptthatprintssomething.py)"
0

В bash оба `` cmd \ и $(cmd) будут заменены выходом команды. Это позволяет вам назначать вывод программы переменной, например

foo=`some command`

или

foo=$(some command)

Обычно вы переносите это в двойные кавычки, чтобы вы могли иметь пробелы в своем выходе. Это должны быть двойные кавычки, так как материал внутри одинарных кавычек не будет выполнен.

0

Ваша желаемая форма работает просто отлично:

$ cat >Retvar.py
#!/usr/bin/python
import sys
print sys.argv[1]
$ chmod +x RetVar.py 
$ foo=`./RetVar.py 42`
$ echo $foo
42
$ 

так предположительно, что способы, с которыми вы пытались печатать, были неправильными. (Это совершенно не зависит от использования backquotes старого стиля или конструкций нового типа, таких как $()). Если у вас все еще есть эта проблема, можете ли вы показать нам минимальный пример кода Python, который воспроизводит его, чтобы помочь нам помочь?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню