2014-06-06 262 views
0

這會變得有點棘手。我有一個shell腳本來在我們的JIRA中創建任務。我在Ubuntu服務器上運行它(一個新手)。Shell腳本 - CURL腳本返回錯誤

我有一個變量在腳本如下:

SCRIPT="curl -D- -u $USER:$PASSWORD -X POST --data @$SAMPLE_FILE -H \"Content-Type: application/json\" $REST_URL" 

我贊同這個腳本,並在使用$ SCRIPT我的shell腳本來運行它。當我打我的腳本時,它總是返回一個錯誤"curl: (6) Couldn't resolve host 'application'"

但是,如果我嘗試單獨運行打印的SCRIPT(我回顯),它會創建一個任務。我知道這是一個小問題,但我無法得到它!

有什麼建議嗎?

+0

如何在$執行命令腳本?我不記得它是正確的,但我記得有一些關於如何執行這樣的事情的警告。您可能還想嘗試'exec「$ SCRIPT」'或'exec $ SCRIPT'或'$($ SCRIPT)'。當我在家時,我需要對此進行測試。因爲你不能確定它們是否包含空格,所以請同時使用'\ SAMPLE_FILE'和'$ USER:$ PASSWORD'來跳過。 –

+0

謝謝你的輸入,我只是把它作爲** $ SCRIPT **來運行。我只是嘗試了所有的建議(exec「$ SCRIPT」或者exec $ SCRIPT或者$($ SCRIPT)),但是徒勞無功,還是有更好的方法呢? – user3715398

回答

2

正如bash tag wiki建議,我們可以通過shellcheck運行代碼自動檢查常見問題:

$ shellcheck yourscript 

In yourscript line 1: 
SCRIPT="curl... -H \"Content-Type: application/json\" $REST_URL" 
     ^-- SC2089: Quotes/backslashes will be treated literally. Use an array. 

In yourscript line 2: 
$SCRIPT 
^-- SC2090: Quotes/backslashes in this variable will not be respected. 

確定,然後let's use an array

command=(curl -D- -u "$USER:$PASSWORD" -X POST --data "@$SAMPLE_FILE" -H "Content-Type: application/json" "$REST_URL") 

# Print what we'll execute: 
printf "%q " "${command[@]}" 
echo 

# Execute it: 
"${command[@]}"