다음 명령이 포함된 쉘 스크립트가 있습니다.
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' ];
문자가 많아 '
읽기가 거의 불가능하지만.