如何 运行 在 python 脚本上推进 Linux 命令

How to run advance Linux command on python script

我想获取以下linux命令的字符串输出

systemctl show node_exporter |grep LoadState| awk '{split([=13=],a,"="); print a[2]}'

我试过

import subprocess
output = subprocess.check_output("systemctl show node_exporter |grep LoadState| awk '{split([=14=],a,"="); print a[2]}'", shell=True)

但输出是, 输出 = subprocess.check_output("systemctl show node_exporter |grep LoadState| awk '{split([=21=],a,"="); 打印 a[2]}'", shell=True) 语法错误:关键字不能是表达式

您需要转义双引号(因为它们表示字符串的 begin/end):

import subprocess
output = subprocess.check_output("systemctl show node_exporter |grep LoadState| awk '{split([=10=],a,\"=\"); print a[2]}'", shell=True)

嗯,

首先,该函数将字符串列表作为命令,而不是单个字符串。例如:

"ls -a -l" - wrong
["ls", "-a", "-l"] - good

其次。如果 linux 命令非常复杂或包含很多行 - 创建一个单独的 bash 文件是有意义的,例如command.sh,将你的 linux 命令放在那里,运行 来自 python 的脚本:

import subprocess
output = subprocess.check_output(["./command.sh"], shell=True)