2012-07-10 2 views
1

내 첫 번째 게시물이 부드럽습니다.오라클 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 

...

+0

정말 이상합니다. 스크립트의 stdout을 파일로 재지 정하고이 파일을 검사 할 수 있습니까? –

+0

그리고'set -x'를 스크립트 시작 부분에 추가하여 실행 중에 실제로 발생하는 것을 볼 수 있습니까? –

+0

응답 해 주셔서 감사합니다. "set -x"를 추가했습니다. 편집 된 게시물 –

답변

1

입니다. 아마도 라인 끝 부분에 \r을 자동으로 추가하는 편집기로 파일을 편집했을 것입니다. 파일을 다시 편집하고 이러한 문자를 제거해야합니다.

+0

를 사용했습니다. 편집을 위해 vi를 사용하여 지금 고고도 감사드립니다. –