我希望程式的名稱(字串,而不是實際名稱)顯示在 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
改為,但當然還有刷新問題。