2

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

0

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .