我正在使用WLST Ant任務,該任務允許在參數屬性下傳遞空格分隔參數列表。WLST參數中的Ant任務空白
問題是當我傳遞一個包含空格的文件目錄時。例如「程序文件」,它成爲程序和文件的兩個參數。
有什麼建議可以解決這個問題嗎?
以下我的建議只適用於一個值。 例如,將「Program Files」參數附加到從已知結束參數到sys.argv實際結束的結尾和循環中。 IE如果我們想讓「程序文件」成爲第四個系統參數,那麼在WLST腳本中我們追加sys.argv [4],[5] ... [結束]。
我正在使用WLST Ant任務,該任務允許在參數屬性下傳遞空格分隔參數列表。WLST參數中的Ant任務空白
問題是當我傳遞一個包含空格的文件目錄時。例如「程序文件」,它成爲程序和文件的兩個參數。
有什麼建議可以解決這個問題嗎?
以下我的建議只適用於一個值。 例如,將「Program Files」參數附加到從已知結束參數到sys.argv實際結束的結尾和循環中。 IE如果我們想讓「程序文件」成爲第四個系統參數,那麼在WLST腳本中我們追加sys.argv [4],[5] ... [結束]。
WLST 11.1.1.9.0的簡短答案:您無法避開此問題。
我有同樣的問題,並調試了一下。
我的發現:在 通過命令行WLSTInterpreterInvoker的weblogic-11.1.1.9.jar調用的類WLSTTask其解析ARGS:
private void parseArgs(String[] arg) {
for (int i = 0; i < arg.length; i++) {
this.arguments = (this.arguments + " " + arg[i]);
}
[...]
的原因,我不知道這些ARG遊戲重新分析,前在python腳本調用:
private void executePyScript() {
[...]
if (this.arguments != null) {
String[] args = StringUtils.splitCompletely(this.arguments, " ");
[...]
public static String[] splitCompletely(String paramString1, String paramString2)
{
return splitCompletely(new StringTokenizer(paramString1, paramString2));
}
private static String[] splitCompletely(StringTokenizer paramStringTokenizer) {
int i = paramStringTokenizer.countTokens();
String[] arrayOfString = new String[i];
for (int j = 0; j < i; j++) arrayOfString[j] = paramStringTokenizer.nextToken();
return arrayOfString;
}
可惜的StringTokenizer方法不區分引用的字符串等sys.argv中Python中獲得獨立的參數,即使你報價參數
有兩個可能的選擇:
爲executePyScript()中12.2.1的代碼已經改變了很多,看來,問題可能出現了(我沒有檢查)
if ((this.arguments.indexOf("\"") == -1) && (this.arguments.indexOf("'") == -1))
args = StringUtils.splitCompletely(this.arguments, " ");
else {
args = splitQuotedString(this.arguments);
}
你嘗試給:程序\文件? – Mani
剛剛嘗試過,沒有運氣。 – IanWatson
也試過了空格轉義字符。 問題是任何空格字符都被解釋爲刪除符。 – IanWatson