我有一個bash腳本,它執行一個Java命令並將空格分隔的字符串作爲參數傳遞。假設java類是「HelloWorld」,並且所需的參數是作爲 「-environment WIN XP」傳遞的。所以在我的腳本中的線路有:BASH文件名空間IsSUE
env = WIN XP
arg=" -environment $env"
javaCmd="java -Xmx2000m foo.bar.HelloWorld $arg"
$javaCmd
我的HelloWorld類只能得到部分參數-environment贏,因爲它期待-environment WIN XP作爲一個整體與空間拋出一個錯誤。我可以如何確保整個字符串被視爲一次而不會在空白處分割。
感謝chcikegg。我已經提出了一個簡單的例子。真正的情況是,變量env是一個文件名,如測試示例$ {NUMBER} .xlsx,其中NUMBER作爲腳本參數傳遞。所以如果我通過2004年,env被設置爲測試樣本2004.xlsx,但問題仍然存在。我的Java代碼仍然獲得測試值,而不是測試sample 2004.xlsx。 –
'-environment'仍然看到一個參數'WIN','XP'被當作'java'的單獨參數。你不能在'bash'中使用像這樣嵌套的嵌入字符串,而不使用數組。 – chepner
謝謝Chepner。你能否演示陣列的用法來處理空間問題。 –