プログラミング

Bashコマンドラインで!(びっくりマーク)をエスケープ

Linuxパソコン・サーバー環境のBashコマンドラインで、!(エクスクラメーション/びっくりマーク)をエスケープする方法について紹介します。
画像を入れたらmarkdownを返してくれるbash関数を組みたかったのですが、エクスクラメーションの障壁にぶち当たった。

!自体は、普段はあまり使うことはないが、結構便利なコマンド。ctrl+rで履歴が見れるのは有名だが、例えばpwdを実行した後に!pまたは!pwと実行すると、pwdが実行される。こういうもの。だが、これのエスケープがなかなか曲者だった。

bash – Bashで! エクスクラメーションをエスケープするには(140827)|teratail

質問

Bashで! エクスクラメーションをエスケープするにはどうしたらよいでしょうか。

$ echo "\![$(echo "hgoe")]($(echo "hgoe"))"
\![hgoe](hgoe)

\ でエスケープしているのに、\まで出力されてしまいます………。

回答

echo '!'"[$(echo "hgoe")]($(echo "hgoe"))"

感想

”と””で文字列の連結ができるんですね、bashは。知らなかったなぁ。普通できませんよね。トリッキーといいますか。
普通だったらecho "" + '' ;みたいにするかと思いますが、コマンドライン独特ですね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です