二重引用符のエスケープ防止

二重引用符のエスケープ防止

Bashスクリプトからいくつかのコマンドを実行したいと思います。
一重引用符を使用すると、変数は値ではなくリテラルとして扱われます。
たとえば、これは二重引用符をエスケープして、すべてを混乱させることなく引用符と二重引用符の混合を処理する方法とは異なりますls "$SOME_DIR"。たとえば、次のことを確認する方法は次のとおりです。 ls '$SOME_DIR'

ssh server.com "mkdir \"/foo/bar/"$final"\""  

命令が長くなるほど読みにくくなり、破損しやすくなるため、これらのすべての脱出をどのように回避できますか?

ベストアンサー1

複数回使用した後の最も簡単な解決策は次heredocsherestringsとおりです。

ssh server.com "mkdir '/foo/bar/$final'"

はい、のように一重引用符にもかかわらず、bash変数の置換は引き続き発生します。$finalecho "test'$final'"

$final注:@muruが指摘したように、単一引用符が含まれている場合は機能しません。

おすすめ記事