如何将Python变量传递给Bash?
我想知道怎么把一个Python变量传给Bash命令行。应该像这样工作:
foo="./RetVar.py 42"
把双引号换成`s
我试过打印结果和用sys.exit()结束程序,但都没成功。我该怎么做才能实现我的目标呢?
3 个回答
0
你想要的格式是可以正常工作的:
$ cat >Retvar.py
#!/usr/bin/python
import sys
print sys.argv[1]
$ chmod +x RetVar.py
$ foo=`./RetVar.py 42`
$ echo $foo
42
$
所以你之前尝试打印的方式可能是错的。(这和使用旧式的反引号或新式的构造,比如 $()
是没有关系的。)如果你还是遇到这个问题,能不能给我们一个简单的Python代码示例,让我们更好地帮助你呢?
1
在bash中,``cmd\
和$(cmd)都会被命令的输出替换掉。这意味着你可以把一个程序的输出结果赋值给一个变量,比如说:
foo=`some command`
或者:
foo=$(some command)
通常你会把这个放在双引号里,这样输出中就可以有空格了。一定要用双引号,因为单引号里的内容是不会被执行的。
10
foo="$(scriptthatprintssomething)"
foo="$(python scriptthatprintssomething.py)"
就这样。用 print
。或者 sys.stdout.write()
。或者类似的东西。如果这个脚本不能直接执行,那你就需要明确指定使用哪个解释器来运行它。