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
。