我对ksh脚本很新,但我有两个ksh脚本,每个脚本都通过isql调用sybase存储过程。我看到的问题是,当我执行第一个脚本时,存储过程运行正常,但是当我执行第二个脚本时,它失败并出现错误( isql -b -S value -U value -P value:not found < / em>的)。这是代码snipets
$ 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 value -U value -P value:not found
这些脚本可以彼此独立运行,因此无法保证在test2.ksh之前可能已经调用了isql,这就是我在每个脚本中设置ISQL_CMD变量的原因。
test1.ksh 正常运行,但 test2.ksh 不会运行,无论是从 test1.ksh 调用还是自行运行。尝试在调试中运行脚本,但它并没有真正提供任何进一步的信息。
答案 0 :(得分:0)
好的,经过一整天的头部刮伤,我已经想到了这一点。 test2.ksh正在执行一些文件处理,并在isql命令之前将IFS值设置为几行。一旦完成,我不得不重置或取消设置IFS并且isql命令工作正常!取消设置IFS值的命令是:
unset IFS
感谢那些试图帮助的人!