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' ];

문자가 많아 '읽기가 거의 불가능하지만.

관련 정보