フラグの説明を1列に入れるようにヘルプセクションをフォーマットします。

フラグの説明を1列に入れるようにヘルプセクションをフォーマットします。

次のヘルプセクションを作成しました。

-m         This is a very very very very very very very very very very
very very very very very very very very very very long sentence

持ちたい

-m         This is a very very very very very very very very very very
           very very very very very very very very very very long 
           sentence.

2つの列が欲しいと指定しますか?

ベストアンサー1

以下は、ヘルプ関連項目を一度に1つずつ印刷するために使用できる機能です。-m質問の例と長いヘルプ文字列を使用しました。この関数は、最初の列の幅を10にハードコードし、2番目の列の残りのスペースを計算します。

#!/bin/bash

function printhelp() (
  c1width=10
  cols=$(tput cols)
  c2width=$((cols - c1width - 1))
  readarray -t lines < <(printf '%s' "$2" | fmt -w $c2width)
  for((line=0; line < ${#lines[*]}; line++))
  do
    if [ $line -eq 0 ]
    then
      col1="$1"
    else
      col1=" "
    fi
    printf "%-${c1width}s %-${c2width}s\n" "$col1" "${lines[line]}"
  done
)

optf='-m'
optd='This is a very very very very very very very very very very very very very very very very very very very very long sentence'
printhelp "$optf" "$optd"

50列画面の出力例:

-m         This is a very very very very very
           very very very very very very very
           very very very very very very very
           very long sentence

80列画面で:

-m         This is a very very very very very very very very very very very
           very very very very very very very very very long sentence

130列画面で:

-m         This is a very very very very very very very very very very very very very very very very very very very very
           long sentence

150列画面で:

-m         This is a very very very very very very very very very very very very very very very very very very very very long sentence

おすすめ記事