我正在尝试使用Oracle Concurrent Program运行我在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
程序错误完成,那么我正在运行主机文件。从日志中可以清楚地看到,当脚本中遇到空格时,它会抛出一个错误,说“找不到命令”。另外,你可以看到我正在做一个简单的添加,即使这也无法识别。
非常感谢这方面的任何帮助。
谢谢:)
答案 0 :(得分:2)
您是否碰巧在Windows系统上使用编辑器来创建脚本?它在每一行的末尾放置一个回车符+换行符,而不是只有换行符的Unix格式。这会弄乱脚本执行。 Unix系统通常有一个像“dos2unix”这样的命令来转换文件。
如果不是这样,我会尝试从命令行手动运行脚本以确保它正常工作。
答案 1 :(得分:0)
当我尝试使用CAT -vt <filename>
读取文件时,我可以看到该文件包含特殊字符,例如^ M和^ I.这可能是因为文件传输模式(但我在ASCII模式下传输,仍然出现特殊字符。)
我打开了一个VI编辑器并粘贴了相同的脚本。保存文件,尝试运行脚本,工作正常。
我仍然没有得到特殊字符的出现方式。我用notepad ++作为我的编辑。
答案 2 :(得分:0)
当VI或CAT显示特殊字符时,转换为Linux / Unix兼容性并未完全完成。通常有很多解决方案,也许Notepad ++就是这里的原因。也许不吧。在操作系统本身上编写脚本不仅更快(不需要FTP,这已经是一个很大的优点),但是你不必面对这些讨厌的控制-M字符。 ASCII转换有时会失败。您也可以尝试其他FTP程序。或者如上所述,尽量避免这一切。