![bashシェルに「」の中に「」を入れる必要がある場合はどうすればよいですか? [閉鎖]](https://linux33.com/image/72206/bash%E3%82%B7%E3%82%A7%E3%83%AB%E3%81%AB%E3%80%8C%E3%80%8D%E3%81%AE%E4%B8%AD%E3%81%AB%E3%80%8C%E3%80%8D%E3%82%92%E5%85%A5%E3%82%8C%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8B%E5%A0%B4%E5%90%88%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E9%96%89%E9%8E%96%5D.png)
次のコマンドを含むシェルスクリプトがあります。
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' ];
文字が多いので'
読むことはほとんど不可能だが。