Saya baru saja menemukan cara lain, yang paling tidak akan berfungsi dengan echostring (kalimat) yang ingin Anda beri tanda baca dengan tanda seru. Itu menjalankan akhir, lebih atau kurang, sekitar Bash histexpand dan hanya butuh sedikit lebih lama untuk kode.
Hex untuk tanda seru, seperti yang tercantum di
http://www.ascii-code.com/ , adalah 21, jadi jika Anda meletakkan \x21di akhir string Anda echo -e $foo,, buat $foogema yang diperluas sendiri [yaitu, foo=$(echo -e "$foo")], apa yang Anda dapatkan ketika Anda echo $foolagi adalah string dengan !di akhir. Dan tidak ada switching histexpand baik.
Bekerja pasti di Bash 4+. Versi sebelumnya, ymmv.
bzr commit -m "It works"!pekerjaan juga.