我试图将使用由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为那些工作。 我希望这有帮助。
快乐的编码! 如果您还有其他问题,请发表评论。