在bash scrip中执行python

2024-04-26 03:59:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要在shell脚本中执行以下代码。通常用语言,如节点.js我可以编写node -e "code here"来执行代码。如何用Python复制这个功能?在

# Python server
python "import SimpleHTTPServer
import SocketServer
PORT = $pythonPort
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
httpd = SocketServer.TCPServer(("", PORT), Handler)
print "serving at port", PORT
httpd.serve_forever()"

Tags: 代码import脚本语言node节点hereport
2条回答

你可以。。。一旦你得到了超过。。。3行,但你可以。例如:

#!/bin/bash
# Python server
pythonPort=8000
python -c "import SimpleHTTPServer;"`
`"import SocketServer;"`
`"PORT = $pythonPort; "`
`"print(PORT); "`
`"Handler = SimpleHTTPServer.SimpleHTTPRequestHandler; "`
`"httpd = SocketServer.TCPServer((\"\", PORT), Handler); "`
`"print(\"serving at port %s\" % PORT); "`
`"httpd.serve_forever()"

重要的部分是-c(将文本作为传递给解释器的命令运行)

更多信息here。在

如果可能的话,我会把它归档。如果需要使端口可配置的功能,可以在Python代码中使用^{},并在命令调用中将其作为参数传递。在

例如,在脚本中输入以下内容:

跑步_服务器.py

^{pr2}$

并用python ./run_server.py 8000来调用它,sys.argv的内容是一个列表,其中第一项是脚本的名称,其余的是调用中传递的参数。在本例中,这将是:['./run_server.py', '8000']

我想你可以用here document。在

例如,下面是一个简单的测试脚本:

#!/bin/bash -ex
testnum=$1

if [ -z $testnum ]; then
    testnum=-1.1
fi

python <<EOF
import math
print(math.fabs($testnum))
EOF

您可以通过将python逻辑放在一个单独的python脚本(接受命令行参数)中,然后在shell脚本中调用它来完成相同的操作。例如:

^{pr2}$

相关问题 更多 >