我如何将 python 变量传递给 shell 命令

How can i pass python variable to a shell command

我有一个 python 脚本,其中包含网络主机、用户名和密码变量,我正试图将其传递到同一个 python 脚本中的 shell 命令。

output = subprocess.check_output(['curl -s -G -u username:password -k \"https://webhost/something/something\"'], shell=True, encoding='utf-8')

你能帮我看看我该怎么做吗?我尝试了很多东西,但 none 成功了。

谢谢

试试这个,

username = 'abc'
password = 'def'
webhost = '1.2.3.4'

output = subprocess.check_output([f'curl -s -G -u {username}:{password} -k \"https://{webhost}/something/something\"'], shell=True, encoding='utf-8')

它被称为 f 字符串。 https://docs.python.org/3/tutorial/inputoutput.html

在字符串开始之前添加一个 f,然后将要插入的变量括在花括号中。

您可以使用此语法将变量传递到字符串中。

您也可以将变量作为列表传递如下,命令中的每个参数都是一个单独的项目,您可以在要解析的列表项目上使用 f 字符串,这样,

username = 'abc'
password = 'def'
webhost = '1.2.3.4'

output = subprocess.check_output(['curl',
 '-s', 
 '-G',
 '-u',
 f'{username}:{password}',
 '-k',
 f'\"https://{webhost}/something/something\"'],
 encoding = 'utf-8')

不要为 shell 构造要解析的字符串;只需提供一个列表。该列表可以直接包含字符串值变量(或从变量构造的字符串)。

username = ...
password = ...
url = ...

output = subprocess.check_output([
                'curl',
                '-s',
                '-G',
                '-u',
                f'{username}:{password}',
                '-k',
                url
           ], encoding='utf-8')