在过去的两个小时里,我一直在努力学习这个简单的例子:
我有一句话:
python -c 'import yum, pprint; yb = yum.YumBase(); pprint.pprint(yb.conf.yumvar, width=1)'
它给出:
Loaded plugins: product-id
{'arch': 'ia32e',
'basearch': 'x86_64',
'releasever': '7Server',
'uuid': 'd68993fd-059a-4753-a7ab-1c4a601d206f',
'yum8': 'rhel',
'yum9': '7.1'}
现在,我只想和“释放者”取得联系。你知道吗
直接在我的Linux上,没有问题:
$ python -c 'import yum, pprint; yb = yum.YumBase(); pprint.pprint(yb.conf.yumvar, width=1)' | grep releasever
'releasever': '7Server',
我有我要找的答案。你知道吗
但要把它写进剧本里,我真是太无奈了。你知道吗
目前,我有:
#!/bin/ksh
check="$(python -c 'import yum, pprint; yb = yum.YumBase(); pprint.pprint(yb.conf.yumvar, width=1)')"
echo "${check}"
# The echo works as expected. But now, I would like to do a grep on that variable:
check2=${check}|grep releasever
echo "${check2}"
结果是空的。你知道吗
我试过很多不同的方法,比如方括号,圆括号,引号,双引号,一体式命令,但是我不能得到我想要的。 我不知道代码背后发生了什么,这很简单。但还是
有人能帮我吗?你知道吗
你的问题是你没有把
check
放在任何类型的std输入中。这很好:或者你可以把
check
内容放进一个文件,然后像grep <string> < <file>
那样做。你知道吗似乎有三种选择。你知道吗
看起来
yb.conf.yumvar
是一本字典。在这种情况下,您可以在python脚本中打印yb.conf.yumvar['releasever']
目录,这样就不需要grep了。你知道吗其次,不要使用grep。相反,让python脚本将
yb.conf.yumvar
解析为json并打印它,然后从外部使用jq
打印releasever
的值第三,这是最明智的方法,直接在Python中做你想做的事情。
ksh
脚本在较长的时间内将更难管理,所以只需在Python和usos.system
中执行您想要执行的外部程序即可。你知道吗相关问题 更多 >
编程相关推荐