큰따옴표를 표시하는 방법

큰따옴표를 표시하는 방법

배쉬 버전: bash-5.0.7

큰따옴표가 사라졌어요

[root@cander ~]# cat test.sh
#!/bin/bash

cat > test.conf << EOF
AA=${one:-["one","two"]}
EOF
[root@cander ~]# sh test.sh 
[root@cander ~]# cat test.conf 
AA=[one,two]

\를 사용해도 효과가 없습니다.

[root@cander ~]# cat test.sh 
#!/bin/bash

cat > test.conf << EOF
AA=${one:-[\"one\",\"two\"]}
EOF
[root@cander ~]# sh test.sh 
[root@cander ~]# cat test.conf
AA=[\"one\",\"two\"]

뭘 기대 할까

AA=["one","two"]

답변1

확장 프로그램 내부의 참조 처리가 이상합니다.

이것이 당신이 원하는 것입니다 ...

$ echo "${one:-["\"one\"","\"two\""]}"
["one","two"]

하지만 여기 문서에는 뭔가 다릅니다 ...

$ cat <<EOF
> ${one:-["\"one\"","\"two\""]}
> EOF
[\"one\",\"two\"]

기본값을 변수에 넣는 것이 가장 쉬운 방법일 것입니다.

$ def_one='["one","two"]'
$ cat <<EOF
> ${one:-$def_one}
> EOF
["one","two"]

답변2

다음 구문을 시도해 볼 수 있습니다.

admin@srv-web:~$ cat test.sh

#!/bin/bash 
cat > test.conf << 'EOF' 
AA=${one:-["one","two"]} 
EOF

결과 :

administrateur@srv-web:~$ ./test.sh ; cat test.conf
AA=${one:-["one","two"]}

관련 정보