2015-07-13 87 views
2

我想将几行代码传递给WebSphere配置文件。将多行代码传递给wsadmin.sh?

这是我尝试:

# ./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上的WebSphere 8.5版本7

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

回答

1

Edward's Answer on SuperUserbkail's comment on Ram Vennam's Answer here都提供相同的解决方案,在大致相同的时间,但他们都没有张贴作为一个答案这里的时候,我问他们,所以我发帖在这里,所以我有一个正确的答案来接受。

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

完美地工作。它允许你把行返回。它尊重缩进,所以你可以有循环和定义函数和类,以及其他需要缩进行的其他东西。

一个额外的奖励,我给大家介绍如何在你的代码逃单引号:

'\''

的第一次报价关闭之前的字符串。 \'放入单引号字符。最后一个引号开始下一个字符串。 Bash自动将三者连接在一起形成一个连续的字符串,其中间有一个单引号。所以,如果我想用单引号而不是上面的双引号,它看起来像这样:

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

你是对的,在Bash中正确的引用这些引号是一个噩梦;很好的澄清 – Edward

2

你可以使用一个分号:

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

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

$ wsadmin.sh -f your_script_file

+0

我想严格执行此命令行 - 无需创建文件或交互模式 - 如果可能的话。有没有可能我可以使用管道来创建几行文本的方式使他们看起来像他们从一个文件,但我真的在命令行上键入他们? (我隐约地意识到管道是* nix中存在的东西,不太清楚它们是什么,它们是如何工作的,或者在这种情况下它们确实有用。) – ArtOfWarfare

+0

我不确定如何在没有创建临时文件 'printf'print(“Hello”); \ nprint(“World”)'| tee tempFile.txt | 。/ jython' –

+0

如果你使用bash,'./wsadmin。sh -f <(echo'print(“Hello”)'; echo'print(“World”)')'应该取决于您的操作系统。 –