将Jython(wsadmin)中的variables传递给shell脚本

我试图将使用由wsadmin.sh调用的Jython脚本从WebSphere检索到的值传递给调用方shell脚本中的variables。

调用者shell脚本(getValue.sh)将具有:

#!/bin/sh /opt/ibm/WebSphere/AppServerV70/bin/wsadmin.sh -lang jython -conntype SOAP -f /home/user/Jython.py exit 0 

Jython脚本(Jython.py)将具有:

 cellName = AdminControl.getCell() return cellName 

如何将cellName的值存储到我的shell脚本中的一个variables中,例如CELL_NAME,我可以像这样使用它:

 echo "Cell Name is: " ${CELL_NAME} 

这个版本的Jython脚本比我实际使用的脚本简单得多,但是我认为这个概念是相同的。

如果我在Jython脚本中使用了很多函数,有没有办法将其中一个值传递给我的shell脚本? 即

 def getValue1(): value1 = "1" return value1 def getValue2(): value2 = "2" return value2 def getValue3(): value3 = "3" return value3 print getValue1() print getValue2() print getValue3() 

我有一种方法来存储多个值到不同的shell脚本variables? 即

 echo "Value #1: " ${VALUE_ONE} echo "Value #2: " ${VALUE_TWO} echo "Value #3: " ${VALUE_THREE} 

…这样我就可以运行一个Jython脚本来检索多个值,并在我的shell脚本中使用这些多个值进行进一步处理。

感谢您提供任何帮助。

谢谢你,马特。 你把我放在正确的轨道上。 我能够通过在命令中添加“ | tail -1 ”来完成我所需要的操作。 您可能已经知道wsadmin SOAP连接总是如何吐出行:

 WASX7209I: Connected to process "dmgr" on node labCellManager01 using SOAP connector; The type of process is: DeploymentManager 

…所以我必须找到一种方法,只需要将屏幕输出的最后一部分分配给我的变量,因此使用“tail -1”。

该命令变成:

 result=`/opt/ibm/WebSphere/AppserverV70/bin/wsadmin.sh -lang jython -conntype SOAP -f /home/user/Jython.py | tail -1` 

使用它,您必须小心在Jython脚本的屏幕上打印的内容,因为只有最后一个打印才会被分配给变量。 您可以使用tail命令调整所需的内容。

感谢您的帮助

我会尽可能地使用你的代码。 我认为你要找到最有效的方法是使用Jython的print命令。 如果你的变量脚本看起来像这样

 #!/bin/sh /opt/ibm/WebSphere/AppserverV70/bin/wsadmin.sh -lang jython -conntype SOAP -f /home/user/Jython.py exit 0 

然后在你的Jython.py文件的某个地方,你需要打印。 它可能看起来像这样。

 def getValue1(): value1 = "1" return value1 def getValue2(): value2 = "2" return value2 def getValue3(): value3 = "3" return value3 print getValue1() print getValue2() print getValue3() 

输出将是

 1 2 3 

如果你需要根据这个命令执行一个命令,你可以考虑把结果传送给xargs。 假设上面你可以执行此代替

 #!/bin/sh /opt/ibm/WebSphere/AppserverV70/bin/wsadmin.sh -lang jython -conntype SOAP -f /home/user/Jython.py | xargs -i echo "hello world" > file{}.txt exit 0 

这将写入“hello world”到file1.txt,file2.txt和file3.txt

如果你只是想保存结果,请尝试

 #!/bin/sh result=`/opt/ibm/WebSphere/AppserverV70/bin/wsadmin.sh -lang jython -conntype SOAP -f /home/user/Jython.py` exit 0 

(`)(以上代字号〜)围绕着你的命令。

我的记忆有点模糊,你可能需要一个安静的标志wsadmin为那些工作。 我希望这有帮助。

快乐的编码! 如果您还有其他问题,请发表评论。