2010-05-09 2 views
1

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

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

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

ответ

8
foo="$(scriptthatprintssomething)" 

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

foo="$(python scriptthatprintssomething.py)" 
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, который воспроизводит его, чтобы помочь нам помочь вам?

0

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

foo=`some command` 

или

foo=$(some command) 

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