Bashでprintfを使う

Bashでprintfを使う

Bashでprintfを使用するときは、常に次のようにフォーマット文字列を指定する必要があります。

printf "" "V01 Oct 2021"

それともprintf "V01 Oct 2021"まだ可能ですか?

答え1

フォーマット文字列を使用することをお勧めしますprintf。例えば、

printf '%s' 'V01 Oct 2021'        # V01 Oct 2021

空の書式文字列を使用すると、引数を印刷するコマンドがないため、空の結果が得られます。

printf '' 'V01 Oct 2021'          # (nothing)

次の場合、文字列に書式制御文字が含まれていないため、パラメーター値なしで書式文字列のみを使用できます。

printf 'V01 Oct 2021'             # V01 Oct 2021

ただし、変数を挿入するには、次の操作を行う必要があります。いいえ-orで終わり、%or文字(またはbashの組み込み実装を含むほとんどの実装エンコーディングを含む他の文字エンコーディング\)を含む場合に備えて、フォーマット文字列に追加します。例えば、%\printf

d=5; a="Increase by $d%"

printf "$a"                       # -bash: printf: `%': missing format character
printf "$a\n"                     # -bash: printf: `\': invalid format character
printf '%s\n' "$a"                # Increase by 5%
printf 'Increase by %d%%\n' "$d"  # Increase by 5%

2番目の例では、それ\n自体が間違っているわけではありませんが、最後の%記号は$a混乱していますprintf

関連情報