次のbash文字列があり、「Hello」文字列の前に改行を追加する必要があります。
bash -c "echo 'Hello' > /location/file"
\n
二重引用符の前、二重引用符内、別のエスケープバリアントを使用して、異なる構文バリアントを使用して追加しました。
「Hello」文字列の前に改行を追加して2行目に表示するにはどうすればよいですか?
答え1
これには(少なくとも)3つのオプションがあります。
- リテラルの改行を使用してください。
bash -c "echo '
Hello' > /location/file"
- コマンド自体の一部としてバックスラッシュエスケープ文字を拡張する使用
printf
(または非標準)(両方ともシェル組み込み):echo -e
bash -c "printf '\n%s\n' Hello > /location/file"
$'
バックスラッシュエスケープ文字をシェルの一部に拡張するbashの非標準引用を使用してください。
bash -c "echo $'\nHello' > /location/file
答え2
あなたはそれを使用することができます$'\n'
:
$ bash -c "echo $'\nHello'" >somefile
Bashのマニュアルでは、次のように言及しています。
この形式の単語は
$'string'
特に扱われます。ワードは、ANSI C規格で指定されているように置き換えられたバックスラッシュエスケープ文字を使用して文字列に展開されます。バックスラッシュエスケープシーケンスがある場合は、次のようにデコードされます。
(標準エスケープシーケンスリストは省略)
答え3
次のことができます。
bash -c "echo $'\nHello'"