我的程序涉及多个调用具有不同参数的KornShell(ksh)脚本文件的JAVA线程。该脚本文件依次调用某些返回某些状态的SQL命令 。我将此状态作为脚本的一部分存储在变量中,并检查从SQL返回的值并采取适当的操作。 问题是所有脚本都在同一个会话中执行,因此变量名将在所有线程中共享。由于这些线程异步工作,我希望这个链接被打破。我能想到的最简单的解决方案是为每个线程使用一个不同的变量(使用脚本的一些输入参数作为标识符),但这意味着该变量的名称需要是动态的。也就是说,我应该能够在另一个变量的名称中使用变量的值。 这甚至可能吗?如果是,那我该怎么做?使用变量'值'在KornShell中定义变量'名称'
Java线程 - 同一会话| | | Java线程 - - |相同的脚本| | | Java线程 - - - |同名var name | | |
Java线程 - - | (同样的var | |名称会导致| Java线程 - |不一致)|
如果没有,那么任何人都可以提出一种替代方法吗?这方面的一个重要方面是,JAVA部分是一个服务器程序,并且将运行更长的持续时间,所以我需要手动'取消'这些变量。 (我不能做的事情,如果我使用数组来存储所有这些)
变量是一个shell脚本变量还是数据库中的一个变量? –
它是一个shell脚本变量。 由于我发布了这个,我取得了一些进展。 现在,脚本的每个调用实际上都会声明自己的变量并设置其自己的值 例如,调用1:var_1 /调用2:var_2 /调用3:var_3 但是当我尝试在if命令中使用此例如[$ var_ $ val -eq 0];则... 无法取得适当的值 – angryInsomniac
在shell脚本中设置的变量对于该shell脚本 是私有的,并且不能被您启动的其他shell脚本读取或使用。 这意味着您不应该在shell脚本中使用变量名称 。 如果您确实需要每个脚本中的唯一值,则可以使用特殊的 shell变量'$$',该变量是该 运行脚本的唯一进程号。 –