我正在寻找通过直接解析ps eww
输出从远程进程中提取环境变量(表示有诸如 psutils 之类的库,但我宁愿不使用它们(
例如:
如果我运行a="foo bar" b=b sleep 100
,ps eww | grep sleep
将返回类似以下内容:
sleep 100 a=foo bar b=b ...
所以在这种情况下的输出应该是:
dict = {"a" : "foo bar", b" : "b" }
到目前为止,我只是简单地获取此输出并根据默认空格分隔符使用split
。 但空格是一个有效的参数(请注意,空格也可以是 key=val 格式中 2 个变量之间的值和分隔符的一部分。
知道谁将其拆分为 key=val 结构,以便空格也是值名称的有效字符(但对键名称无效(?
您可以按空格拆分输入字符串(就像您所做的那样(。然后,对于每个子字符串,检查它是否包含=
字符。如果是这样,请将其添加为新的键值对;如果没有,请将子字符串追加到上一个键的值。
法典:
dict = {}
key = ''
for s in input.split():
if '=' in s:
key, val = s.split('=')
dict.update({key : val})
else:
if key in dict:
dict[key] += ' ' + s