Python 2.7 Python2.7上的Shell命令执行

Python 2.7 Python2.7上的Shell命令执行,python-2.7,shell,subprocess,Python 2.7,Shell,Subprocess,要验证站点域是否包含“com”。假设我有shell varibale作为 export FIRST_URL="http://www.11111.com" export SECOND_URL="http://www.22222.org" 用户使用参数(部分shell变量)调用Python脚本 Python脚本是 import sys, os, subprocess PART_URL = sys.argv[1] print( "PART_URL=",PART_URL) COMPLETE_UR

要验证站点域是否包含“com”。假设我有shell varibale作为

export FIRST_URL="http://www.11111.com" 
export SECOND_URL="http://www.22222.org"
用户使用参数(部分shell变量)调用Python脚本

Python脚本是

import sys, os, subprocess

PART_URL = sys.argv[1]
print( "PART_URL=",PART_URL)

COMPLETE_URL = PART_URL+'_URL'       # Formed a full shell varibale
cmd_str='echo {} | grep \"com\".format(COMPLETE_URL)'  # equivalent to echo $FIRST_URL | grep com

my_site=subprocess.check_output(cmd_str, shell=True)   # Note we cant use subprocess.run() in Python Python 2.7
print("The validated Site is ", my_site)
输出应为“已验证的站点为”

请参阅

弄明白了

COMPLETE_URL = PART_URL+'_URL'     
cmd_str='echo ${} | grep \'com\'.format(COMPLETE_URL)' 
my_site=subprocess.check_output(cmd_str, shell=True)  
或者,我们可以使用

my_site=subprocess.call(shlex.split(cmd_str))

感谢您的回复,但您还没有完全阅读查询,1)一部分是形成动态环境字符串,2)第二部分是获取所创建环境的值。我确实读过:)可能是我应该添加更多说明。1.动态变量名:我还没有发布上面的完整代码片段。我已经将
foo
硬编码到值
FIRST
,但是您可以从sys.argv[1]中读取,添加预定义的后缀(在本例中为
\u VAR
)并获取完整的变量名。2.检索值:os.environ[foo+'\u VAR']将获取所创建的环境变量的值。谢谢,我想查看带有子流程的代码行。检查\u输出(cmd\u str,shell=True),什么是cmd\u str?你可以发布吗?os.environ直接让你访问环境变量的值。为什么要启动另一个进程,运行echo并在有更简单的方法时获得输出?我如上所述编辑了脚本,以验证站点是否包含“com”。请看一下,为什么不把URL本身作为参数传递呢?为什么您要到
grep
检查格式,而不是在脚本本身中进行验证?
COMPLETE_URL = PART_URL+'_URL'     
cmd_str='echo ${} | grep \'com\'.format(COMPLETE_URL)' 
my_site=subprocess.check_output(cmd_str, shell=True)  
my_site=subprocess.call(shlex.split(cmd_str))