2010-11-23 7 views
3

Oracle 동시 프로그램을 사용하여 KSH 셸에서 빌드 한 HOST 스크립트를 실행하려고합니다. 다음과 같이Oracle Concurrent 프로그램에서 UNIX 셸 스크립트를 실행하는 중에 발생하는 문제 Program

내 테스트 스크립트는 다음과 같습니다

echo "System Parameters passed by Concurrent Manager" 
echo "+--------------------------------------------+" 
XXWIN_PROGRAM=$0 
XXWIN_LOGIN=$1 
XXWIN_USERID=$2 
XXWIN_USERNAME=$3 
XXWIN_REQUEST_ID=$4 
echo "XXWIN_PROGRAM :"$XXWIN_PROGRAM 
echo "XXWIN_LOGIN  :"$XXWIN_LOGIN 
echo "XXWIN_USERID  :"$XXWIN_USERID 
echo "XXWIN_USERNAME :"$XXWIN_USERNAME 
echo "XXWIN_REQUEST_ID :"$XXWIN_REQUEST_ID 

shift 4 
echo "" 
echo "User Parameters passed by Concurrent Manager" 
echo "+------------------------------------------+" 
echo "1 :"$1 
echo "2 :"$2 
echo "3 :"$3 
echo "4 :"$4 
echo "5 :"$5 
echo "6 :"$6 
echo "7 :"$7 
echo "8 :"$8 
echo "9 :"$9 
echo "" 

# Generic Script Begins 
# Declaring Constants, Data File Path, Control File Path etc 

CTL_FILE_NAME=$1  # Control File Name(s) 
CTL_FILE_PATH=$2  # Control File Path 
DATA_FILE_NAME=$3 # Data File Name(s) 
DATA_FILE_PATH=$4 # Data File Path 
COMPONENT_NAME=$5 # Interface Component Name 
SEQ_VALIDATION=$6 # Sequence Name 
SUPPORT_EMAIL= $7 # Support e-mail(s) List 

# Printing the User Parameters 
echo "1 :"$CTL_FILE_NAME 
echo "2 :"$CTL_FILE_PATH 
echo "3 :"$DATA_FILE_NAME 
echo "4 :"$DATA_FILE_PATH 
echo "5 :"$COMPONENT_NAME 
echo "6 :"$SEQ_VALIDATION 
echo "7 :"$SUPPORT_EMAIL 

# Assigning the Archive, IN and Prog Dir Paths 
ARCHIVE_DIR="$XXWIN_TOP/bin/TEMP/archive" 
XXWIN_IN_DIR="$XXWIN_TOP/bin/TEMP/in" 
XXWIN_PROG_DIR="$XXWIN_TOP" 

# Printing the directories 
echo "Archive Directory :" $ARCHIVE_DIR 
echo "IN Directory :" $XXWIN_IN_DIR 
echo "Program Directory :" $XXWIN_PROG_DIR 

i=10 
k=5 
j=`expr $i + $k` 
echo $j 

echo $i 

echo "Out of Concurrent Program" 

쉘 스크립트 프로그램 이름은 ".prog"

나는 다음과 같은 매개 변수를 사용하여 동시 요청을 실행하고 끝납니다 : alt text

을 프로그램이 정상적으로 완료되었지만 다음 로그 메시지가 나타납니다. alt text

alt text

내가 그 밖으로 호스트 파일을 실행하고, 그래서 프로그램이 오류가 완료 #!/usr/bin/ksh을 사용하고있는 경우. 로그에서 스크립트에서 공간이 생길 때 "Command not found"라는 오류가 발생합니다. 또한 당신이 볼 수 있듯이 나는 또한 단순한 추가 작업을하고 있으며 심지어 인식되지도 않습니다.

이 점에 대해 도움을 주시면 감사하겠습니다.

감사합니다 :)

답변

1

스크립트를 작성하기 위해 Windows 시스템에서 편집기를 사용하는 일이 있었나요? 줄 바꿈 만있는 Unix 형식 대신 모든 줄 끝에 캐리지 리턴 + 줄 바꿈 문자를 넣습니다. 그것은 스크립트 실행을 엉망으로 만든다. 유닉스 시스템은 일반적으로 "dos2unix"와 같은 명령을 사용하여 파일을 변환합니다.

그렇지 않은 경우 명령 줄에서 수동으로 스크립트를 실행하여 작동하는지 확인합니다.

+0

메모장이 아닌 편집기로 메모장 ++을 사용하고 있습니다. 나는 유닉스 박스에서 완벽하게 실행되는 500 줄의 코드를 개발했다. 하지만 난 오라클 애플 리케이션에서 그것을 실행할 수 없습니다 :(. – Arun

0

CAT -vt <filename>을 사용하여 파일을 읽으려고하면 파일에^M 및^I와 같은 특수 문자가 있음을 알 수 있습니다. 이것은 파일 전송 모드 때문일 수 있습니다 (그러나 ASCII 모드로 전송되었지만 여전히 나타나는 특수 문자).

VI 편집기를 열고 동일한 스크립트를 붙여 넣었습니다. 파일을 저장하고 스크립트를 실행하려고했는데 정상적으로 작동했습니다.

나는 아직도 특수 문자가 어떻게 나타나는지 알지 못했다. 나는 편집장으로 메모장을 사용했다.

0

VI 또는 CAT에서 특수 문자가 표시되면 Linux/Unix 호환성으로의 변환이 완전히 완료되지 않습니다. 종종 여러 가지 해결책이 있습니다. 메모장 ++가 여기에 있습니다. 아마. OS 자체에 스크립트를 작성하는 것은 더 빠를뿐만 아니라 (이미 큰 이점이있는 FTP는 필요하지 않음) 이러한 성가신 제어 M 문자를 직면 할 필요가 없습니다. 때때로 ASCII 변환이 실패합니다. 다른 FTP 프로그램을 사용해 볼 수도 있습니다. 또는 위에서 언급 한 것처럼 모든 것을 피하십시오.