首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将shell脚本的输出存储在conky中的变量中?

如何将shell脚本的输出存储在conky中的变量中?
EN

Stack Overflow用户
提问于 2021-02-27 05:23:16
回答 1查看 779关注 0票数 0

所以我要用sensors命令得到CPU核心温度。

我在信里写道

代码语言:javascript
复制
$Core 0 Temp:$alignr${execi 1 sensors | grep 'Core 0' | awk {'print $3'}} $alignr${execibar 1 sensors | grep 'Core 0' | awk {'print $3'}}

每秒钟,我都会在两个地方运行完全相同的命令sensors | grep 'Core 0' | awk {'print $3'},用于完全相同的输出。是否有一种方法可以将输出保存在变量中,并使用该变量代替命令。

EN

回答 1

Stack Overflow用户

发布于 2021-02-27 10:56:50

conky没有用户变量。相反,你能做的是叫lua从conky来为你做这件事。在默认情况下,lua语言通常内置到conky中,因此您只需将一些代码放入文件中,将该文件包含在conky安装文件中,并调用该函数。例如,这些shell命令将创建一个测试:

代码语言:javascript
复制
cat >/tmp/.conkyrc <<\!
conky.config = {
    lua_load = '/tmp/myfunction.lua',
    minimum_height = 400,
    minimum_width = 600,
    use_xft = true,
    font = 'Times:size=20',
};
conky.text = [[
 set ${lua myfunction t ${execi 1 sensors | awk '/^Core 0/{print 0+$3}'}}°C
 get ${lua myfunction t}°C ${lua_bar myfunction t}
]]
!
cat >/tmp/myfunction.lua <<\!
vars = {}
function conky_myfunction(varname, arg)
 if(arg~=nil)then vars[varname] = conky_parse(arg) end
 return vars[varname]
end
!
conky -c /tmp/.conkyrc -o 

myfunction.lua文件中,我们声明一个函数myfunction() (需要以conky_作为前缀,以便我们可以从conky调用它)。它使用两个参数,一个变量的名称和一个conky表达式。它调用conky_parse()来计算表达式,并以调用方提供的名称将值保存在表vars中。然后,它将结果值返回给调用方。如果没有给出表达式,它将返回前一个值。

conky.text中,set开头的行用变量texeci传感器表达式的任意名称调用lua中的myfunction以求值、保存和返回。get开头的行调用myfunction来获取值。

lua_bar类似于exec_bar,但是调用lua函数,参见man conky。但是,它需要一个数字,而不是exec_bar接受的领先的awk,所以我已经更改了awk以返回这个数字,并将°C添加到了这个笨拙的文本中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66395852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档