如何将 if_existing 语句与路径字符串一起使用?

How to use if_existing statment with path string?

我正在尝试使用 ${if_existing ..} 检查文件是否存在于 conky 中,如下所示:

    ${if_existing /home/stanislav/.cache/yandexweather/bkn_n.png}YES \
    ${else}NO
    ${endif}\

这非常有效。但是,如何将 ${if_existing ..} 语句与另一个命令的输出一起使用?例如:

    ${if_existing echo "~/.cache/yandexweather/"$(python ~/.cache/yandexweather/yw_script.py -image_0)}YES \
    ${else}NO
    ${endif}\

后者不起作用

您可以使用 ${eval ...} 先计算 shell 命令,然后解析 ${if_...} 部分。例如,

${eval $${if_existing ${execi 10 echo "myfile"}}\
          YES $${else} NO $${endif} }

在 eval 中,if.. elseendif 部分通过将 $ 加倍为 $$ 来使其无效。但是,${execi 部分每 10 秒运行并执行 shell 命令 (echo ...)(如果您的表达式永远不会改变,请选择一个大的值)。

在 execi 返回字符串(在本例中为 myfile)之后,将再次解析生成的命令。每个 $$ 都被评估为 $,所以我们有:

${if_existing myfile} YES ${else} NO ${endif}