SSH를 통해 일부 SQLPLUS 코드를 실행하고 있습니다.
ssh -q node1 'export ORACLE_SID=DB11D_1;ORAENV_ASK=NO;. oraenv >/dev/null 2>&1;sqlplus -s / as sysdba << ENDSQL
whenever sqlerror exit 1
alter system set wallet open identified by "Passwo$1";
exit;
ENDSQL'
비밀번호 "Passwo$1"의 $1이 교체된 것 같습니다. 이로 인해 명령이 실패합니다.
이 명령은 결국 "Passwo"에서 인식하는 Change System Settings Wallet Open으로 변경됩니다*
ERROR at line 1:
ORA-28353: failed to open wallet
SQLPLUS 명령에서 "$1"을 보존하는 방법에 대해 알고 계시나요?
나는 다음을 시도했습니다
- alter system set wallet open identified by \"Passwo$1\";
- alter system set wallet open identified by \\\"Passwo$1\\\";
- alter system set wallet open identified by '\""Passwo$1""\';
비밀번호의 $ 기호에 이스케이프 문자를 추가할 수 없습니다. 그래서 난 할 수 없어
- alter system set wallet open identified by "Passwo\$1";
감사해요
답변1
에 전달하는 here 문서에서 as를 sqlplus
탈출하거나 (질문에서 이 작업을 수행할 수 없다고 말한 이유가 명확하지 않음) 또는 or를 사용하여 여기 문서 전체를 인용하십시오 ( 안에 없는 작업을 수행하는 것이 아마도 더 나을 것입니다). 확장이 필요한 기타 콘텐츠는 여기에 문서화하세요.$
\$
<<'ENDSQL'
<<\ENDSQL
또한 이 문서 내에서는 문자열을 Passwo$1
작은따옴표로 묶어야 합니다. 문서가 셸 스크립트이기 때문에 문자열을 해석하는 셸로부터 문자열을 보호해야 합니다. 로 작성하시면 됩니다 'Passwo$1'
.