оператор теста и переменные conky

Я пытаюсь включить переменную conky только при определенных условиях. Я экспериментировал с оператором теста, как показано ниже.

${exec test -e /home/viridian/conky.conf && echo "yes" || echo "${goto 35}MOCEX : ${color}${fs_used /home/viridian/mocex}/${fs_size /home/viridian/mocex} ${alignr}${fs_used_perc /home/viridian/mocex}% ${fs_bar 4,100 /home/viridian/mocex}"}

По сути, что должно было произойти, так это то, что я поместил скопированный файл conf в каталог, и он отобразит yes. Эта часть работает. Когда я его выдвину, он отобразит переменную, которую я выложил. Это не работает. Нельзя так показать переменную или я что-то не так делаю?


person viridian    schedule 07.02.2021    source источник


Ответы (2)


Вывод $exec не анализируется conky, поэтому вы не можете использовать такие команды, как $color в эхе, поскольку он будет просто отображаться как текст $color. В вашем примере вы на самом деле ничего не увидите, поскольку оболочка жалуется на синтаксис ${fs_used /home/viridian/mocex}, поскольку она интерпретирует это как подстановку переменных (${variable/pattern/replacement}). Вы должны были использовать одинарные кавычки вместо двойных кавычек.

Однако у conky есть специальная команда для проверки существования файла, поэтому вы должны использовать ее, например:

${if_existing /home/viridian/conky.conf}  yes
${else}   ${goto 35}MOCEX : ${color}...
${endif}

person meuh    schedule 07.02.2021

Это сработало, вы прекрасно объяснили

person viridian    schedule 07.02.2021