Отображение строки в статусе tmux в зависимости от вывода команды

Отображение строки в статусе tmux в зависимости от вывода команды

Я хочу, чтобы имя программы (строка, а не фактическое имя) отображалось в строке состояния tmux, если эта программа запущена.

Вот что у меня есть set -g status-right:

#{?#{!=:#(getPid p),0},program,}

Где:

  • #(getPid p)это скрипт, который я запускаю, который возвращает 0, если программа не запущена, или не 0 (PID или wc -l) в противном случае
  • #{!=:#(getPid p),program,}должен вернуть 1 или 0 в зависимости от результата предыдущего шага
  • #{?#{!=:#(getPid p),0},program,}следует вывести «программа», если предыдущий шаг возвращает 1

Но я даже не могу напечатать 1 или 0 только с первым шагом #{!=:#(getPid p),0}. Я не уверен, поддерживается ли это, возможно, #{}поддерживаются только флаги в условных операторах, а не#()

РЕДАКТИРОВАТЬ

Я остановился на #(getPid p | awk '$0 != 0 {print \"program\"}')том, что кажется проще, но все равно не подходит.

РЕДАКТИРОВАТЬ

Другой подход, который также работает в командной строке: if [ $(getPid b) != 0 ]; then echo program; fiв строке состояния по-прежнему ничего нет.

РЕДАКТИРОВАТЬ

Я решил сделать так, чтобы мой скрипт отображал имя программы, так что все, что мне нужно, это #(getPid p), но все равно ничего не получается. Я думаю, проблема, вероятно, в чем-то другом. Вот полная строка:

set -g status-right "#(getName p) |#[fg=colour239,bg=colour236,nobold,nounderscore,noitalics]#[fg=colour253,bg=colour239] %Y-%m-%d | %H:%M #[fg=colour103,bg=colour239,nobold,nounderscore,noitalics]#[fg=colour236,bg=colour103]"

решение1

Понятно, мой getNameсценарий должен быть echo -nвместо этого, но, конечно, есть проблема с обновлением.

Связанный контент