2015-07-13 25 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」)')'應該取決於您的操作系統。 –