假设我http://mysite.com/myscript.sh的文件包含:
#!/bin/bash
echo "Hello $1"
从命令行,我可以使用以下命令执行我的脚本(不下载):
bash <(curl -s http://mysite.com/myscript.sh) World
现在,我不是从命令行执行上面的命令,而是想从python脚本执行它。我尝试了以下操作:
import os
os.system('bash <(curl -s http://mysite.com/myscript.sh) World')
...但我收到以下错误:
sh:-c:第0行:意外令牌附近的语法错误`('
如何在python中正确执行?
答案 0 :(得分:1)
显然,os.system
通过/bin/sh
运行命令,这通常会导致链接到的任何shell都降低到不包含<(...)
构造的兼容模式。您可以通过将结果存储在临时文件中或使用其他级别的shell来绕过它。丑陋,但它确实有效。
os.system('bash -c "bash <(curl -s http://mysite.com/myscript.sh) World"')
答案 1 :(得分:0)
python有一个libcurl,所以你不必去处理命令行行为。这是应该真正做到的function list - 我自己从未运行过远程脚本。如果需要安装python绑定,说明为here。
import curl