4

Oracleコンカレントプログラムを使用してKSHシェルでビルドしたHOSTスクリプトを実行しようとしています。

私のテストスクリプトは次のとおりです。

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」で終わります

次のパラメーターを使用して同時リクエストを実行しています。 代替テキスト

プログラムは正常に完了しますが、次のログメッセージが表示されます。 代替テキスト

代替テキスト

プログラムを使用している場合#!/usr/bin/kshはエラーで完了するので、それなしでホストファイルを実行しています。ログから、スクリプトでスペースが検出されると、「コマンドが見つかりません」というエラーがスローされることが明らかになります。また、私が単純な加算を行っていることがわかるように、それでも認識されません。

この点での助けは大歓迎です。

ありがとう :)

4

3 に答える 3

2

Windows システムでエディターを使用してスクリプトを作成しましたか? 改行だけの Unix 形式ではなく、すべての行の終わりにキャリッジ リターン + 改行文字を配置します。これにより、スクリプトの実行が台無しになります。Unix システムには通常、ファイルを変換するための「dos2unix」などのコマンドがあります。

そうでない場合は、スクリプトをコマンド ラインから手動で実行して、スクリプトが機能することを確認します。

于 2010-11-23T23:20:36.223 に答える
0

を使用してファイルを読み取ろうとするとCAT -vt <filename>、ファイルに ^M や ^I などの特殊文字が含まれていることがわかりました。これは、ファイル転送モードが原因である可能性があります (ただし、ASCII モードで転送しましたが、まだ特殊文字が表示されます)。

VI エディタを開き、同じスクリプトを貼り付けました。ファイルを保存し、スクリプトを実行しようとしましたが、問題なく動作していました。

特殊文字がどのように表示されるかはまだわかりませんでした。エディタとして notepad++ を使用しました。

于 2010-11-24T07:56:10.837 に答える