2017-10-11 120 views
2

我的想法是把JSON字符串變量JSON,我有誰需要一個控制檯登錄到用戶在AWS IAM的COMAND是一個命令:aws iam create-login-profile --cli-input-json file://create-login-profile.json 猛砸JSON字符串變量

在創建登錄矚目

。 JSON是JSON以下內容:

{ 
"UserName": "roberto.viquezzz", 
"Password": "aaaaaaaaaaa", 
"PasswordResetRequired": true} 

我嘗試寫bash腳本其中包含JSON VAR 「JSON」 像下面的代碼:

JSON="{\"UserName\": \"roberto.viquezzz\",\"Password\": \"aaaaaaaaaaa\",\"PasswordResetRequired\" : true}" 
aws iam create-login-profile --cli-input-json $JSON 

,如果我在利弊型ole ./file.sh該文件執行創建一個控制檯用戶。 如果試圖執行此代碼我得到一個錯誤:Unknown options: "aaaaaaaaaaa","PasswordResetRequired", :, true}, "roberto.viquezzz","Password":

,但如果我從喜歡命令行中執行以下代碼:

aws iam create-login-profile --cli-input-json "{\"UserName\": \"roberto.viquezzz\",\"Password\": \"aaaaaaaaaaa\",\"PasswordResetRequired\": true}" 

一切都沒事,也許誰知道什麼是錯?請建議!大約$ JSON

+1

總是在bash中使用雙引號。否則,其值(空格,換行符等)中的所有討厭字符都被解釋爲將字符串拆分爲多個參數。 – Alfe

+0

除非您有一些要在內部展開的變量,否則不需要雙引號。只需使用單引號'jsonVar ='{「UserName」:「roberto.viquezzz」,; 「密碼」:「aaaaaaaaaaa」,; 「PasswordResetRequired」:true}';回聲「$ {jsonVar}」' – Inian

+0

@Inian他仍然需要引用它。除非他在變量的值內添加單引號。 – neuhaus

回答

3

把雙引號:

aws iam create-login-profile --cli-input-json "$JSON" 

屬於分配期間那裏得到的shell消耗的報價。你可以通過發行echo $JSON來驗證。 通過添加引號,您將確保整個字符串作爲單個參數傳遞給命令「aws」。

+0

謝謝!它有助於! – Andrej

+0

不錯!然後,您可以將我的答案標記爲解決方案。 – neuhaus

+1

是的,你快一點,4分鐘,直到我可以:) – Andrej