为什么 conky 中的 execbar 不使用变量

Why is execbar in conky not working with a variable

conky 中的 execbar 似乎无法正常工作。

所以如果我在 bash 脚本(名为 myscript.sh)

# moc or mocp is Music on Console
totalsec=$(mocp --info | grep "TotalSec" | cut -d: -f2 | sed 's/^ //g' | sed 's/ $//g')
cursec=$(mocp --info | grep "CurrentSec" | cut -d: -f2 | sed 's/^ //g' | sed 's/ $//g')
progress=$(echo "(${cursec}*100/${totalsec})" | bc)
echo "${execbar echo ${progress}}"
echo "${progress}" # This works and shows be the value of the integer variable.

然后使用

从 conky 调用 bash 脚本
conky.text = [[${execpi 3 ./myscript.sh}]];

然后不显示进度条。只有一个白色的矩形。

但是,如果相同的 bash 脚本更改为

progress=23
echo "${execbar echo ${progress}}"

然后它开始工作并显示 23 的常量条。 不知道为什么传递整数变量不起作用。 任何解决此问题的帮助将不胜感激。

事实证明,bash 脚本中的 execbar 可以工作。有点。

为了将问题集中在变量问题上,我制作了一个小脚本 (myscript2.sh),它只获取当前时间的秒数以显示在栏中...

#!/bin/bash
progress=$(date --date='now' +%S)
echo ${execbar echo ${progress}}

...并且能够使用这个 conky 配置文件定期更新显示秒数的条...

conky.config = {
    alignment = 'top_left',
    minimum_width = 300,
    own_window = true,
    own_window_hints = 'below',
    own_window_type = 'desktop',
    own_window_argb_visual=true,
    own_window_transparent = true,
    update_interval = 2.0,
}

conky.text = [[
${execpi 3 ./myscript2.sh}
]]

但是,conky 在显示栏填充到适当程度和显示栏空之间交替。换句话说,栏内容的显示闪烁。呸

作为替代方案,通过使用脚本 (myscript3.sh) 来简单地 return 要在栏中显示的值...

#!/bin/bash
progress=$(date --date='now' +%S)
echo $progress

...并更改 conky 配置文件以使用 execibar 而不是 execpi...

conky.config = {
    alignment = 'top_left',
    minimum_width = 300,
    own_window = true,
    own_window_hints = 'below',
    own_window_type = 'desktop',
    own_window_argb_visual=true,
    own_window_transparent = true,
    update_interval = 2.0,
}

conky.text = [[
${execibar 3 ./myscript3.sh}
]]

...它似乎按预期工作,没有任何闪烁。