落ち込んだファイル名に予期しない引用符があります。

落ち込んだファイル名に予期しない引用符があります。

grim / slurpを使用しているときにスクリーンショットファイル名を生成しようとすると、なぜ奇妙な動作が発生するのかわかりません。

私がこうすれば:

grim -g "$(slurp)" "$HOME/screenshot-$(date).png"

私は得る:

screenshot-Sat 27 Jun 2020 06:02:36 PM EDT

時間が私のフォルダにソートされていないことを除いて、うまくいきます。だから私はこれを試しました:

grim -g "$(slurp)" "$HOME/screenshot-$(date +\"%y%m%d_%T\").png"

しかし、この場合、私は次のような結果を得ます。

screenshot-"200627_19:35:39.png"

日付文字列全体の周りに引用符がある理由(式に引用符がない)とそれを削除する方法を説明できる人はいますか?

ベストアンサー1

$()引用符をエスケープする必要がないように、新しい引用文脈を作成します。これが$()好ましい理由の1つです``。入れ子と引用符を混在させると悪夢が発生する可能性があります。

比較しよう:

$ echo "screenshot-$(date +\"%y%m%d_%T\").png"
screenshot-"200701_14:56:19".png
$ echo "screenshot-`date +\"%y%m%d_%T\"`.png"
screenshot-200701_14:56:27.png

バックスラッシュを省略して使用することもできます"screenshot-$(date +"%y%m%d_%T").png"。あるいは、残りは%特別ではないので、内部引用符を完全に省略してください。

$ echo "screenshot-$(date +%y%m%d_%T).png"
screenshot-200701_14:57:23.png

おすすめ記事