4

我正在尝试运行我使用 Oracle 并发程序在 KSH shell 中构建的 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"

Shell 脚本程序名称以“.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 编辑器并粘贴了相同的脚本。保存文件,尝试运行脚本,它工作正常。

我仍然不明白特殊字符是如何出现的。我使用记事本++ 作为我的编辑器。

于 2010-11-24T07:56:10.837 回答
0

When either VI or CAT displays specials characters, the conversion to Linux/Unix compatibility is not completely done. There's often many solutions, maybe Notepad++ is the cause here. Maybe not. Writing scripts on the OS itself, is not only faster (no need for FTP, which is already a big plus), but you don't have to face these annoying control-M characters. The ASCII conversion sometimes fails. You can also try another FTP program. Or avoid it all togheter, as mentioned above.

于 2014-11-23T16:36:11.393 回答