将多行代码传递给wsadmin.sh?

时间:2015-07-13 01:14:01

标签: python websphere jython

我想将几行代码传递给WebSphere配置文件。

这是我的尝试:

# ./wsadmin.sh -lang jython -c 'print("Hello")
> print("World!")'

这打印出一个回复:

WAS7209I: Connected to process"<my profile name>" on node <node name> using SOAP connector; The type of process is: UnManagedProcess
Hello

请注意,它似乎只是忽略了同一行代码。

当我在Python中尝试相同的东西时,它运行正常:

# python -c 'print("Hello")
> print("World!")

打印:

Hello
World!

我在CentOS 7上使用WebSphere 8.5版。

注意:在得到Ram Vennam的答案之后,我在超级用户身上发布了一个相同的问题:https://superuser.com/q/939746/240375 - 这就是我最终得到答案的地方。

2 个答案:

答案 0 :(得分:2)

您可以使用分号:

./wsadmin.sh -lang jython -c 'print("Hello");print("World!")'

或者,脚本文件可以使用-f选项和wsadmin一起作为输入。

$ wsadmin.sh -f your_script_file

答案 1 :(得分:2)

Edward's Answer on SuperUserbkail's comment on Ram Vennam's Answer here几乎同时提供了相同的解决方案,但当我问他们时,他们都没有在这里发布答案,所以我发布在这里我有一个正确的答案接受。

$ ./wsadmin.sh -lang jython -f <(echo 'print("Hello")
> print("World")')

完美无缺。它允许你放入行返回。它尊重缩进,所以你可以有for循环并定义函数和类以及其他需要缩进行的东西。

一个额外的好处,我将分享您如何在代码中转义单引号:

'\''

第一个引号关闭前面的字符串。 \'将单引号文字放入。最后一个引号开始下一个字符串。 Bash自动将三者连接在一起形成一个连续的字符串,其中间有一个引号。因此,如果我想使用单引号而不是上面的双引号,它将如下所示:

$ ./wsadmin.sh -lang jython -f <(echo 'print('\''Hello'\'')
> print('\''World'\'')')