2010-11-23 2 views
3

J'essaie d'exécuter un script HOST que j'ai construit dans un shell KSH à l'aide d'un programme concurrent Oracle.Problème lors de l'exécution du script shell UNIX à partir d'Oracle concurrent Programme

Mon script de test est la suivante:

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" 

Nom du programme Script Shell se termine par ".prog"

Je courais la demande simultanée avec les paramètres suivants: alt text

Le le programme se termine normalement, mais je reçois les messages de journal suivants. alt text

alt text

Si j'utilise #!/usr/bin/ksh le programme se termine par erreur, donc je suis en cours d'exécution du fichier hôte avec que. A partir du journal, il est clair que quand un espace est rencontré dans le script, il lance une erreur disant "Command not found". Aussi, comme vous pouvez le voir, je fais une simple addition, même si elle n'est pas reconnue.

Toute aide à cet égard est très appréciée.

Merci :)

Répondre

1

Avez-vous arrive d'utiliser un éditeur sur un système Windows pour créer le script? Il place un caractère retour chariot + caractère de saut de ligne à la fin de chaque ligne au lieu du format Unix de juste avoir un saut de ligne. Cela gâche l'exécution du script. Les systèmes Unix ont généralement une commande comme "dos2unix" pour convertir le fichier.

Si ce n'est pas le cas, j'essaierais d'exécuter le script manuellement depuis la ligne de commande pour m'assurer que cela fonctionne.

+0

J'utilise Notepad ++ comme éditeur et non comme bloc-notes. J'ai développé 500 lignes de code et fonctionne parfaitement depuis la boîte Unix. Mais je ne suis pas capable de l'exécuter à partir de l'application Oracle :(. – Arun

0

Lorsque j'ai essayé de lire le fichier en utilisant CAT -vt <filename>, j'ai pu voir que le fichier contient des caractères spéciaux tels que^M et^I. Cela peut être dû au mode de transfert de fichier (mais j'ai transféré en mode ASCII, les caractères spéciaux apparaissent toujours). J'ai ouvert un éditeur de VI et j'ai collé le même script. Enregistrer le fichier, a essayé d'exécuter le script, ça fonctionnait bien.

Je n'ai toujours pas compris comment les caractères spéciaux sont apparus. J'ai utilisé notepad ++ comme éditeur.

0

Lorsque VI ou CAT affiche des caractères spéciaux, la conversion vers la compatibilité Linux/Unix n'est pas complètement terminée. Il y a souvent beaucoup de solutions, peut-être que Notepad ++ est la cause ici. Peut être pas. L'écriture de scripts sur l'OS lui-même n'est pas seulement plus rapide (pas besoin de FTP, ce qui est déjà un gros plus), mais vous n'avez pas à faire face à ces fiers personnages de contrôle-M. La conversion ASCII échoue parfois. Vous pouvez également essayer un autre programme FTP. Ou évitez tout cela, comme mentionné ci-dessus.

Questions connexes