2010-10-18 154 views
1

我有一個簡單的腳本難執行shell腳本

... 
dir=`pwd` 
echo $dir 

cd ./selenium-grid-1.0.8/ 

CMD="ant -Dport=$1 -Dhost=$2 -DhubURL=http://172.16.1.137:4444 -Denvironment="$3"-DseleniumArgs="-firefoxProfileTemplate C:/software/rc_user_ffprofile -multiWindow" launch-remote-control" 
echo $CMD 
$CMD 2>&1 

#End 

每當我運行此命令時,我得到:./register_rc.sh:第16行:C:/軟件/ rc_user_ffprofile:是一個目錄

此目錄必須是-firefoxProfileTemplate選項的參數。我怎麼包括在這個字符串沒有它b ?? ??

幫助

日Thnx

回答

0

你看上去混合您的報價了。看看StackOverflow爲您做的語法突出顯示。

我建議在多個步驟中生成CMD變量,並確保您能夠引用您的引號。

1

我相信你的命令應該是:

CMD="ant -Dport=$1 -Dhost=$2 -DhubURL=http://172.16.1.137:4444 -Denvironment=\"$3\"-DseleniumArgs=\"-firefoxProfileTemplate C:/software/rc_user_ffprofile -multiWindow\" launch-remote-control" 

的反斜槓是用來「轉義」引號。

+0

謝謝你。感謝您的回答 – Afamee 2010-10-19 16:37:43

1

這裏告訴你逃脫你的報價的答案是錯誤的。這將把這些引號直接傳遞給螞蟻,我懷疑這就是你想要的。

將命令存儲在變量中的原因是什麼?這是一個非常糟糕的主意。你爲什麼不能直接寫下這個命令呢?如果您想實現模塊化或代碼重用,請定義一個函數。

如果要顯示執行的命令,請使用set -x

+0

優秀的建議。參見[BashFAQ/050](http://mywiki.wooledge.org/BashFAQ/050)瞭解更多信息(也適用於ksh等)。 – 2010-10-23 00:43:00