2017-06-15 21 views
0

使用變量來設置命令行參數我設置如下命令行參數:如何在bash

$TOKENARG='Authorization: Bearer 9042f9a3caacc63419be489aefec02a5eae338c33' 
curl -v -X DELETE -H $(echo $TOKENARG) http://localhost:3001/api/v1/articles/3 

和期望的結果是:

curl -v -X DELETE -H 'Authorization: Bearer 9042f9a3caacc63419be489aefec02a5eae338c33' http://localhost:3001/api/v1/articles/3 

但是當我運行上述一個它不按預期工作,並返回以下消息:

捲曲:(6)無法解析主機:承載
*重建網址:9042f9a3caacc63419be489aefec02a5eae338c33
無法解析主機:9042f9a3caacc63419be489aefec02a5eae338c33

我應該如何通過使用可變參數?

+0

請通過shellcheck.net運行您的代碼。祝你好運。 – shellter

回答

0

由於您不引用您的命令替換,因此該字符串會被拆分爲三個字Authorization:,Bearer9042f9a3caacc63419be489aefec02a5eae338c33。爲了防止這種情況,你可以引用它:

curl -v -X DELETE -H "$(echo $TOKENARG)" http://localhost:3001/api/v1/articles/3 

但你並不需要echo和命令替換所有:$(command)具有輸出command一樣的,所以你可以使用

curl -v -X DELETE -H "$TOKENARG" http://localhost:3001/api/v1/articles/3 

方注意:所有大寫變量名稱只應用於環境變量,例如參見POSIX spec(第四段),所以更好的是

$tokenarg='Authorization: Bearer 9042f9a3caacc63419be489aefec02a5eae338c33' 
curl -v -X DELETE -H "$tokenarg" http://localhost:3001/api/v1/articles/3 
+0

我可以修復這個錯誤,謝謝。 – ShunY