byobuカスタム状態に問題があります

byobuカスタム状態に問題があります

byobu-tmuxステータスバーにnVidia GPU使用率を追加しようとしています。私はインストールしましたグラフィックプロセッサ統計返品

~$ gpustat
myhost                 Mon Aug 19 17:26:51 2019  410.48
[0] GeForce GTX 1080 Ti | 22'C,   0 % |     0 / 11178 MB |
[1] GeForce GTX 1080 Ti | 41'C,   0 % |     0 / 11175 MB |

その後、テキストプロセッサを作成して〜/.byobu/bin/2_gpuに保存し、byobu Webページで提案されているようにステータスをカスタマイズしました。

~$ cat .byobu/bin/2_gpu
#!/bin/sh
echo "$(gpustat | tail -n+1 | sed -nr "s/\[[0-9]\].+([0-9]+)\s\%.*$/\1%/p" | tr [:space:] ',' | head -c-1)" 

動作しているように見えるbashシェルでは、shebangがshかbashであるかは重要ではないようです。

~$ .byobu/bin/2_gpu
0%,0%

しかし、そのテキストをbyobu-tmuxステータス行にインポートすることはできません。より単純なカスタム状態はうまく機能しますが、sedコマンドの正規表現引数の引用符および/または「$」をエスケープする際にいくつかの問題があります。なぜechoが必要なのかはわかりませんが、echoを削除してもecho "$(...)"役に立ちません。内部二重引用符と「$」文字にバックスラッシュを追加しても役に立ちません。

答え1

さて、多くの調整の終わりに素晴らしいカラーコーディングの利点を使用して、私が望むように動作するようです。

#!/bin/sh
SED_PATTERN='s/^.*([0-9]+)\s%.*$/\1%%,/p'
GPUSTAT="$(gpustat | tail -n+2 | sed -nr $SED_PATTERN | head -c-2)"
echo "#[bg=blue]GPU:$GPUSTAT#[bg=black]"

関連情報