執行shell腳本有一個空的論點我的bash腳本,需要在幾個參數測試,然後和運行一個命令,如下圖所示從Java
call script => /bin/bash myscript arg1 arg2 arg3 arg4
comm called => command -a arg1 -b arg2 -c arg3 -d arg4
如果參數爲空,則該選項不可調用。
call script => /bin/bash myscript arg1 arg2 '' arg4
comm called => command -a arg1 -b arg2 -d arg4
我能夠通過使用下面一行的腳本來測試參數
if test "${arg3:-t}" != "t" ; then
這個腳本就像一個魅力的提示調用時實現這一目標。即使我用空白參數替換「」,它也能正常工作。
當我使用exec從java調用這個腳本時,這開始失敗。
Process p = Runtime.getRuntime().exec("/bin/bash myscript arg1 arg2 '' arg4");
expected command => command -a arg1 -b arg2 -d arg4 (as in above example)
actual command => command -a arg1 -b arg2 -c '' -d arg4
我不明白爲什麼會發生這種情況。哪裏有問題?在shell腳本中或者它的命令從java執行的方式?
這怎麼解決?
「失敗」是什麼意思? – 2011-05-23 14:18:23
可能重複[如何使用參數執行命令?](http://stackoverflow.com/questions/7134486/how-to-execute-command-with-parameters) – Raedwald 2015-01-07 20:32:22