0より大きい場合にのみジョブ数を表示

0より大きい場合にのみジョブ数を表示

私は機能がありますjobscount()

jobscount() {
   local stopped='$(jobs -s | wc -l | tr -d " ")'
   local running='$(jobs -r | wc -l | tr -d " ")'
   echo -n "${running}r/${stopped}s"
}

私はこの機能を使います$PS1

PS1=" \w $(jobscount) \$ "

唯一の問題は、実行中のバックグラウンドプロセスがない場合、または停止したタスクがないと、その機能が$PS1無駄にスペースを占めることです。私が望むのはorstoppedrunning0その時現れる。

ベストアンサー1

この方法をとても複雑にしました。出力がjobs空でないことを確認し、\jPS1文字列に追加します。

if [ -n "$(jobs -p)" ]; then echo "\j"; fi

私のプロンプトの一部は次のとおりです。

#Show number of jobs if at least one job
export PS1+='`if [ -n "$(jobs -p)" ]; then echo "(\j)"; fi`'

おすすめ記事