如果该程序正在运行,我希望该程序的名称(字符串,而不是实际名称)显示在 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,则应该打印“program”
但我甚至无法仅通过第一步打印 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
改,但是当然还有刷新的问题。