echo -e "\n" が 1 行ではなく 2 つの空行を提供するのはなぜですか。

echo -e "\n" が 1 行ではなく 2 つの空行を提供するのはなぜですか。

file.txtに "aaaa"行があり、その後に空行だけを追加し、その空行の後にテキスト行を追加したいとします。 次 の
ようにしました。これが 見えた。2行のテキストの間に空白行はありません。 なぜこれが起こり、どのように削除するのですか?




答え1

echo引数として使用された文字列を出力したら、出力文字列の末尾に改行文字を追加して行を終了します。

そして

echo "string"

あなたはstring最後に改行文字を取得します。

したがって、

echo -e "\n"

最後に改行文字と改行文字が表示されます(つまり、2つの空白行)。

追加の改行文字を必要としない(たとえば、終了しない行を出力する)、そのechoオプションを使用するか-n、この場合は空の行のみを挿入する場合は引数と一緒にまたはecho ""引数なしで使用してください。echo

からhelp echobash

Options:
  -n        do not append a newline
  -e        enable interpretation of the following backslash escapes

他のシェルに移植可能なものが必要な場合は、次のものを代わりにbash使用してくださいprintf

printf '\n' >>file.txt
printf 'bbbb\n' >>file.txt

あるいは、単一のリダイレクトで両方のステートメントを実行する別の方法は次のとおりです。

{
    printf '\n'
    printf 'bbbb\n'
} >>file.txt

または単に

printf '\nbbbb\n' >>file.txt

関連:

関連情報