Я хочу, чтобы имя программы (строка, а не фактическое имя) отображалось в строке состояния 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
вместо этого, но, конечно, есть проблема с обновлением.