猛砸JSON字符串变量

问题描述:

我的想法是把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

把双引号:

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

属于分配期间那里得到的shell消耗的报价。你可以通过发行echo $JSON来验证。 通过添加引号,您将确保整个字符串作为单个参数传递给命令“aws”。

+0

谢谢!它有助于! – Andrej

+0

不错!然后,您可以将我的答案标记为解决方案。 – neuhaus

+1

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