bashシェルに「」の中に「」を入れる必要がある場合はどうすればよいですか? [閉鎖]

bashシェルに「」の中に「」を入れる必要がある場合はどうすればよいですか? [閉鎖]

次のコマンドを含むシェルスクリプトがあります。

if [ -e "./${name}/\"$1\"_page.json" ];

私は他の多くの言語とは異なり、\"動作しないことがわかりました。

どうすればいいですか?

答え1

三重二重引用符を使用しますか?

    if [ -e "./${name}/"""$1"""_page.json" ];

これは

  • ${name}そして$1実際の値に置き換えてください。

注:

archemar@mybox:~/tmp7$ foo=bar
archemar@mybox:~/tmp7$ f2=deux
archemar@mybox:~/tmp7$ echo "${f2}/"""${foo}"""/test.php"
deux/bar/test.php
archemar@mybox:~/tmp7$ echo "${f2}/\"${foo}\"/test.php"
deux/"bar"/test.php

指摘したように、望ましい結果は少し不明瞭です。

答え2

一重引用符のみを使用してください。

if [ -e './${name}/"$1"_page.json' ];

希望または拡張した場合は、単一引用符は使用でき${name}ません$1強い参照と弱い参照の違いについては、この記事を読んでください。

ただし、パラメータを拡張するには文字列を連結することをお勧めします。

if [ -e './'"${name}"'"'"$1"'"_page.json' ];

文字が多いので'読むことはほとんど不可能だが。

関連情報