Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
混合shell和python脚本是否可能?_Python_Linux_Shell - Fatal编程技术网

混合shell和python脚本是否可能?

混合shell和python脚本是否可能?,python,linux,shell,Python,Linux,Shell,我发誓我以前见过这样做,但现在找不到了。是否可以让shell脚本启动python interpeter“中流”,即: 您可以使用此shell语法(在Unix文献中称为document): #/垃圾箱/垃圾箱 这是一个shell脚本 python您可以编写 exec python <<END_OF_PYTHON import sys print ("xyzzy") sys.exit(0) END_OF_PYTHON exec python当然,在我发布这篇文章之后,我马上想到了

我发誓我以前见过这样做,但现在找不到了。是否可以让shell脚本启动python interpeter“中流”,即:


您可以使用此shell语法(在Unix文献中称为document):

#/垃圾箱/垃圾箱
这是一个shell脚本
python您可以编写

exec python <<END_OF_PYTHON

import sys

print ("xyzzy")

sys.exit(0)
END_OF_PYTHON

exec python当然,在我发布这篇文章之后,我马上想到了一种方法:

#!/bin/sh

echo Shell

python <<EOF

import sys

print "Python"

sys.exit(0)

EOF
#/垃圾箱/垃圾箱
回声弹

python如果您的
python
脚本非常短。您可以使用
-c
选项将其作为字符串传递给
python

python -c 'import sys; print "xyzzy"; sys.exit(0)'


我同意混合/混搭可以是一种非常强大的技术——不仅在脚本中,而且在命令行中(例如,perl内联已经被证明是非常成功的)。因此,我的小提示是关于bash/python中混合脚本的一行程序的另一个变体(除了kev提到的之外):

for VAR in $(echo 'import sys; print "x y z"; sys.exit(0)' | python -);do echo "$VAR"; done;
产生

x
y
z

+1:as执行优于仅调用python。在这种情况下,shebang是不必要的,只会被视为一种评论。@williampersell:你知道,我甚至没有注意到shebang。它不仅没有必要,而且实际上是误导性的,因为这不会调用
env
。我想这个命令可能是
execenvpython
python -c '
import sys
print("xyzzy")
sys.exit(0)
'
for VAR in $(echo 'import sys; print "x y z"; sys.exit(0)' | python -);do echo "$VAR"; done;
x
y
z