我对ksh脚本非常陌生,但是我有两个ksh脚本,每个脚本通过isql调用sybase存储过程。我看到的问题是,当我执行第一个脚本时,存储过程运行良好,但是当我执行第二个脚本时,会出现错误(isql、-b、-S值、-U值、-U值、-P值: not )。下面是代码片段
$SERVER、$DBO_USER和$DBO_PASSWORD的值在脚本的前面设置。
test1.ksh
ISQL_CMD="isql -b -S ${SERVER} -U ${DBO_USER} -P ${DBO_PASSWORD}"
VAR=`${ISQL_CMD} << EOF
set nocount on
go
set proc_return_status off
go
declare @var_id int
,@rtnval int
exec @rtnval = DB_NAME..MY_STORED_PROC_1
@parameter1 = ${VAR_IN}
,@parameter_output = @var_id output
go
EOF`它执行得很好,我在VAR变量中得到了值。
test2.ksh (VAR变量从test1.ksh传入):
ISQL_CMD="isql -b -S ${DSQUERY} -U ${DBO_USER} -P ${DBO_PASSWORD}"
RETURN_VALUE=`${ISQL_CMD} << EOF
set nocount on
go
declare @rtnval int
exec @rtnval = DB_NAME..MY_STORED_PROC_2
@var_id = '${VAR}'
go
EOF`我得到以下错误:
isql -b -S值-U值-P值:未找到
这些脚本可以彼此独立运行,因此不能保证在test2.ksh之前调用了isql,这就是为什么我在每个脚本中设置了ISQL_CMD变量。
own运行正常,但test2.ksh不运行,无论是从test1.ksh调用还是自己运行。尝试在调试中运行脚本,但没有提供任何进一步的信息。
发布于 2013-07-25 23:58:06
好吧,经过一整天的绞尽脑汁,我终于弄明白了。isql正在执行一些文件处理,并在isql命令之前几行设置IFS值。我必须重置或取消IFS一旦我完成和isql命令工作良好!取消设置IFS值的命令是:
unset IFS感谢那些试图帮助你的人!
https://stackoverflow.com/questions/17865445
复制相似问题