もっと広くはどれくらいのエコなのか! Bashでは、間にスペースはありません。
karthik@cosmic:~$ echo "Hello!World"
bash: !World: event not found
karthik@cosmic:~$ echo "Hello\!World"
Hello\!World
karthik@cosmic:~$
答え1
誰かのおかげで解決策は簡単です。
二重引用符を削除してエスケープします!
。
echo Hello\!World
または、bash 4.3以降の場合は二重引用符を使用しますが、閉じる引用!
符に従う必要があります。
echo "Hello!""World"
~からBash 4.3のリリースノート:
Lake二重引用符で囲まれた文字列で、閉じる引用符が続く場合、履歴拡張文字(!)は履歴拡張を引き起こしません。
すべての文字が特別な意味を失う場合は、単一引用符を使用することをお勧めします。
echo 'Hello!World'
または、cshスタイルの履歴拡張を完全に無効にします。
histchars=
または:
set +o histexpand
または:
set +H
履歴拡張は、bashがスクリプトではなく対話型の場合にのみデフォルトで有効になります。
`...`
廃止されたコマンド置換形式が使用されない限り、単一引用\
符内でも内部的に特別な意味を維持します。