跨多个ksh脚本使用isql

时间:2013-07-25 18:00:48

标签: sybase ksh isql

我对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 调用还是自行运行。尝试在调试中运行脚本,但它并没有真正提供任何进一步的信息。

1 个答案:

答案 0 :(得分:0)

好的,经过一整天的头部刮伤,我已经想到了这一点。 test2.ksh正在执行一些文件处理,并在isql命令之前将IFS值设置为几行。一旦完成,我不得不重置或取消设置IFS并且isql命令工作正常!取消设置IFS值的命令是:

unset IFS

感谢那些试图帮助的人!