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

    >


画像を入れたらmarkdownを返してくれるbash関数を組みたかったのですが、エクスクラメーションの障壁にぶち当たった。

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

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



Q

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

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

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

A

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

感想

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



お困りですか?この記事で紹介していることをマンツーマンで指導、解説、代行します。まずはお気軽にお問い合わせください。


Close Menu