echo "\*"がecho "\\*"と同じ理由

echo

タイトル。 、とecho "\*"まったく同じ出力を持ちますecho "\\*"\*私はGNU bash 5.2.15を使用しています。

echo "\\*"出力を期待していますが、なぜ出力も出るのか\*わかりません。echo "\*"私が知っている限り、状況は次のようになります。

  1. バッシュは以下を見た:$echo "\*"
  2. Bashはバックスラッシュをエスケープせずに二重引用符を処理します。$echo \*
  3. Bashは*バックスラッシュエスケープを使用します。$echo *
  4. 印刷を押します*

私の疑いは3にあります。バックスラッシュ*は2ですでにエスケープされているため、エスケープされていないと思います。これは正しいですか?

ベストアンサー1

\\脱出口がないようです。

~からBash マニュアルの二重引用符セクション:

特別な意味を持たない先行バックスラッシュ文字は変更されません。

したがって、変換されていない場所はエスケープされていない場所"\*"と同じです。このコマンドはと同じ結果を生成するため、何も変換しません。"\\*"\\\echoprintf %s

おすすめ記事