2010-11-23 1 views
3

Ich versuche, ein HOST-Skript ausführen, die ich in KSH-Shell mit einem Oracle Concurrent-Programm erstellt habe.Problem beim Ausführen von UNIX-Shell-Skript von Oracle gleichzeitig Programm

My Test-Script ist wie folgt:

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" 

Shell Script Programmname endet mit ".prog"

Ich bin die gleichzeitige Anforderung mit den folgenden Parametern ausgeführt: alt text

Die Das Programm ist normal, aber ich erhalte die folgenden Protokollnachrichten. alt text

alt text

Wenn ich #!/usr/bin/ksh bin mit dem Programm in Fehler beendet wird, damit ich die Host-Datei leite, dass mit aus. Aus dem Protokoll wird klar, dass, wenn im Skript ein Leerzeichen gefunden wird, ein Fehler ausgegeben wird, der sagt "Command not found". Auch wie du sehen kannst, mache ich eine einfache Ergänzung, selbst das wird auch nicht erkannt.

Jede Hilfe in dieser Hinsicht wird sehr geschätzt.

Thanks :)

Antwort

1

Haben Sie zufällig einen Editor auf einem Windows-System verwenden, um das Skript zu erstellen? Es wird ein Wagenrücklauf + Zeilenvorschub-Zeichen am Ende jeder Zeile anstelle des Unix-Formats von nur einem Zeilenvorschub gesetzt. Das vermasselt die Ausführung des Skripts. Unix-Systeme haben normalerweise einen Befehl wie "dos2unix", um die Datei zu konvertieren.

Wenn das nicht ist, würde ich versuchen, das Skript manuell über die Befehlszeile auszuführen, um sicherzustellen, dass es funktioniert.

+0

Ich verwende Notepad ++ als Editor und nicht als Notepad. Ich habe 500 Zeilen Code entwickelt und läuft perfekt von der Unix-Box. Aber ich kann es nicht von Oracle-Anwendung ausführen :(. – Arun

0

Als ich versuchte, die Datei mit CAT -vt <filename> zu lesen, konnte ich sehen, dass die Datei Sonderzeichen wie^M und^I enthält. Dies kann wegen des Dateiübertragungsmodus sein (aber ich habe im ASCII-Modus übertragen, trotzdem erschienen die Sonderzeichen).

Ich habe einen VI-Editor geöffnet und das gleiche Skript eingefügt. Speichern Sie die Datei, versuchen Sie, das Skript auszuführen, Es funktionierte gut.

Ich habe immer noch nicht verstanden, wie die Sonderzeichen erschienen. Ich habe Notepad ++ als meinen Editor benutzt.

0

Wenn entweder VI oder CAT Sonderzeichen anzeigen, ist die Konvertierung in Linux/Unix-Kompatibilität nicht vollständig abgeschlossen. Es gibt oft viele Lösungen, vielleicht ist Notepad ++ hier die Ursache. Vielleicht nicht. Das Schreiben von Skripten auf dem Betriebssystem selbst ist nicht nur schneller (keine Notwendigkeit für FTP, was schon ein großes Plus ist), sondern Sie müssen sich diesen lästigen Kontroll-M-Zeichen nicht stellen. Die ASCII-Konvertierung schlägt manchmal fehl. Sie können auch ein anderes FTP-Programm versuchen. Oder vermeiden Sie es wie oben erwähnt.

Verwandte Themen