2番目のechoステートメントが正確に何をしているのかを理解しようとしています(既存のスクリプトです)。
echo "Triggering report.. "
curl -s -X POST "http://aaa.bbb"
echo -e \ '\
'
-e
バックスラッシュをエスケープできるという内容を読んでいます。ところで、なぜ外部にバックスラッシュがあるのかわからず、引用符の中に\nの代わりにバックスラッシュだけがある理由はよくわかりません。
答え1
2番目のコマンドは、echo
次の移植可能なコマンドと同じです。
printf ' \\\n\n'
これにより、スペース、バックスラッシュ、および2つの改行が出力されます。
比較のために、このecho
コマンドはエスケープされたスペースだけでなく、リテラルバックスラッシュとリテラル改行文字を出力してこれらの文字を出力します。デフォルトでは、2番目の改行文字が出力に追加されますecho
。最初のスペースは引用符付き文字列の一部ではないため、エスケープする必要があります(そうでない場合は、シェルはコマンドを単語に分割して削除します)、バックスラッシュは一重引用符で囲まれた文字列になければなりません。それ以外の場合はエスケープされます。次の文字を定義します。
-e
コマンドで使用されているオプションはここで何もしないで削除できます。
echo
(から)bash
の等価公式:
echo -e ' \\\n'
echo ' \
'
echo -n -e ' \\\n\n'
echo -n ' \
'
また見なさい: