내 첫 번째 게시물이 부드럽습니다.오라클 expdp CentOS 6.2 쉘 스크립트 비정상적인 동작 - 새 줄이 명령을 찾지 못함
Oracle 데이터베이스를 백업하기 위해 RedHat 5.3 상자에서 가져온 스크립트는 다음과 같습니다. 이 스크립트는 Redhat 5.3 상자에서 제대로 작동했습니다. 그런 다음이를 centos 6.2 상자에서 oracle db를 백업하는 참조로 사용하고 필요에 따라 수정했습니다.
#!/bin/bash
ORACLE_HOME="/u01/app/oracle/product/11.2.0/db_1"
NLS_LANG=AMERICAN_AMERICA.AR8ISO8859P6
BKDATE=`date "+%Y-%m-%d_%H-%M-%S"`
C1="system/[email protected] DIRECTORY=RMBACKUP SCHEMAS=USER1,USER2,USER3 DUMPFILE=dbname_"
C2="_full_pump.dmp LOGFILE=dbname_"
C3="_full_pump.log"
BKCMD=$C1$BKDATE$C2$BKDATE$C3
echo $C1
echo $C2
echo $C3
echo $BKDATE
echo $BKCMD
#run the exp backup
$ORACLE_HOME/bin/expdp $BKCMD
이상한 bahavior 내가 스크립트를 실행할 때 새로운 라인은 명령을 찾을 수없는 오류가 발생하고 아래와 같이 연결 병합됩니다 있다는 것입니다.
system/[email protected] DIRECTORY=RMBACKUP SCHEMAS=USER1,USER2,USER3 DUMPFILE=dbname_
_full_pump.dmp LOGFILE=dbname_
_full_pump.log
2012-07-10_09-39-06
system/[email protected] DIRECTORY=RMBACKUP SCHEMAS=USER1,USER2,USER3 DUMPFI_full_pump.log39-06ILE=dbname_
/bin/expdp: No such file or directoryacle/product/11.2.0/db_1
다른 텍스트로 날짜 병합 그 에코 출력, 오타 아니다. 내가 여기 처음에 -x 설정하고 추가 된
당신이 볼 수 있듯이, 텍스트에'\r'
문자가 응답을 기다리는 출력
+ ORACLE_HOME=$'/u01/app/oracle/product/11.2.0/db_1\r'
+ NLS_LANG=$'AMERICAN_AMERICA.AR8ISO8859P6\r'
++ date +%Y-%m-%d_%H-%M-%S
+ BKDATE=$'2012-07-10_10-27-45\r'
+ C1='system/[email protected] DIRECTORY=RMBACKUP SCHEMAS=USER1,USER2,USER3 DUMPFI'E=dbname_
' C2='_full_pump.dmp LOGFILE=dbname_
+ C3=_full_pump.log
+ BKCMD='system/[email protected] DIRECTORY=RMBACKUP SCHEMAS=USER1,USER2,USER3 DUM_full_pump.log'7-45ILE=dbname_
+ echo system/[email protected] DIRECTORY=RMBACKUP SCHEMAS=USER1,USER2,USER3 $'DUMPFILE=dbname_\r'
system/[email protected] DIRECTORY=RMBACKUP SCHEMAS=USER1,USER2,USER3 DUMPFILE=dbname_
+ echo _full_pump.dmp $'LOGFILE=dbname_\r'
_full_pump.dmp LOGFILE=dbname_
+ echo $'_full_pump.log\r'
_full_pump.log
+ echo $'2012-07-10_10-27-45\r\r'
2012-07-10_10-27-45
+ echo system/[email protected] DIRECTORY=RMBACKUP SCHEMAS=USER1,USER2,USER3 $'DUMPFILE=dbname_\r2012-07-10_10-27-45\r_full_pump.dmp' $'LOGFILE=dbname_\r2012-07-10_10-27-45\r_full_pump.log\r'
system/[email protected] DIRECTORY=RMBACKUP SCHEMAS=USER1,USER2,USER3 DUMPFILE=dbn_full_pump.log27-45ILE=dbname_
+ $'/u01/app/oracle/product/11.2.0/db_1\r/bin/expdp' system/[email protected] DIRECTORY=RMBACKUP SCHEMAS=USER1,USER2,USER3 $'DUMPFILE=dbname_\r2012-07-10_10-27-45\r_full_pump.dmp' $'LOGFILE=dbname_\r2012-07-10_10-27-45\r_full_pump.log\r'
/bin/expdp: No such file or directoryacle/product/11.2.0/db_1
...
정말 이상합니다. 스크립트의 stdout을 파일로 재지 정하고이 파일을 검사 할 수 있습니까? –
그리고'set -x'를 스크립트 시작 부분에 추가하여 실행 중에 실제로 발생하는 것을 볼 수 있습니까? –
응답 해 주셔서 감사합니다. "set -x"를 추가했습니다. 편집 된 게시물 –