Saya baru saja menemukan cara lain, yang paling tidak akan berfungsi dengan echo
string (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 \x21
di akhir string Anda echo -e $foo
,, buat $foo
gema yang diperluas sendiri [yaitu, foo=$(echo -e "$foo")
], apa yang Anda dapatkan ketika Anda echo $foo
lagi 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.