次のコードがあります
printf "%8s.%s\n" "$RANDOM" "$RANDOM" "$RANDOM" "$RANDOM" "$RANDOM" "$RANDOM" "$RANDOM" "$RANDOM"
これにより、予想される出力が生成されます。
24756.22971
9910.13045
7701.30924
22972.27622
次のように、後で使用できるように変数の先行スペースとともにこの出力を保存したいと思います。
printf -v output "%8s.%s\n" "$RANDOM" "$RANDOM" "$RANDOM" "$RANDOM" "$RANDOM" "$RANDOM" "$RANDOM" "$RANDOM"
ただし、$ output変数を印刷/エコーしようとすると、先行スペースは消えます。
24756.22971
9910.13045
7701.30924
22972.27622
ベストアンサー1
output
次のような引用符なしで変数を使用しているようです。
printf '%s\n' $output
これにより、シェルは変数の文字列をスペース(デフォルトではスペース、タブ、および改行)に分割します。つまり、先行インデントを削除します。printf
フォーマット文字列は各単語に再利用されるため、まだ4行の出力を取得できます。
を使用すると、echo $output
1行にデータを取得できます。これはecho
、パラメータ間にスペースがある各パラメータ(文字列の単語分割)を出力するためです。
代わりに、拡張子を二重引用符で囲む必要があります$output
。
printf '%s' "$output"
(フォーマット文字列をここに入れませんでした。\n
なぜなら、文字列はすでに改行文字で終わっているので、文字列の末尾に空白行が出力されるからです。)
また見なさい: