Как передать переменную Python в оболочку Bash? Он должен работать следующим образом:
foo="./RetVar.py 42"
Замените двойные кавычки на `s
Я пробовал печатать и sys.exiting результат, но безрезультатно. Как я мог бы выполнить свою задачу?
foo="$(scriptthatprintssomething)"
Что это. print
. Или sys.stdout.write()
. Или т.п. Если script не является исполняемым, вам нужно явно указать интерпретатор.
foo="$(python scriptthatprintssomething.py)"
В bash оба `` cmd \
и $(cmd) будут заменены выходом команды. Это позволяет вам назначать вывод программы переменной, например
foo=`some command`
или
foo=$(some command)
Обычно вы переносите это в двойные кавычки, чтобы вы могли иметь пробелы в своем выходе. Это должны быть двойные кавычки, так как материал внутри одинарных кавычек не будет выполнен.
Ваша желаемая форма работает просто отлично:
$ 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, который воспроизводит его, чтобы помочь нам помочь?