Mostrar una cadena en estado tmux dependiendo de la salida del comando

Mostrar una cadena en estado tmux dependiendo de la salida del comando

Quiero que el nombre de un programa (una cadena, no el nombre real) aparezca en la barra de estado de tmux si ese programa se está ejecutando.

Esto es lo que tengo en mi set -g status-right:

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

Dónde:

  • #(getPid p)es el script que estoy ejecutando, que devuelve 0 si el programa no se está ejecutando o no 0 (un PID o wc -l) en caso contrario
  • #{!=:#(getPid p),program,}debe devolver 1 o 0 dependiendo del resultado del paso anterior
  • #{?#{!=:#(getPid p),0},program,}debería imprimir "programa" si el paso anterior devuelve 1

Pero ni siquiera puedo imprimir 1 o 0 con solo el primer paso #{!=:#(getPid p),0}. No estoy seguro de si esto es compatible, tal vez solo #{}se admitan indicadores en condicionales, no#()

EDITAR

Estoy decidido a #(getPid p | awk '$0 != 0 {print \"program\"}')lo que parece más simple, pero todavía no lo puedo hacer.

EDITAR

Otro enfoque que también funciona en la línea de comandos: if [ $(getPid b) != 0 ]; then echo program; fitodavía no hay nada en la barra de estado.

EDITAR

Decidí hacer que mi script hiciera eco del nombre del programa, así que todo lo que necesito es #(getPid p), pero todavía no puedo. Creo que el problema probablemente esté en otra parte. Esta es la línea completa:

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]"

Respuesta1

Entendido, mi getNamescript debe echo -nhacerlo, pero, por supuesto, está la cuestión de la actualización.

información relacionada