Linux终端编写含JSON配置的AWS命令时,按回车仅换行无法执行命令的问题求助
嘿,这种小问题卡半天真的超闹心!我来给你捋清楚怎么解决:
你现在遇到的情况是,shell(比如bash)认为你还没把命令输入完——因为你正在输入的JSON被引号/大括号包裹着,shell检测到这些语法符号还没闭合,所以按回车只会换行,不会执行命令。
解决方法有两种,看你习惯哪种:
方法1:直接在终端输入多行JSON(闭合语法后执行)
如果你想手动逐行写JSON,只要确保最后把包裹JSON的引号和大括号都闭合,再按回车就行。举个实际的例子:
aws ec2 run-instances --cli-input-json '{ "ImageId": "ami-xxxxxx", "InstanceType": "t2.micro", "MinCount": 1, "MaxCount": 1 }'
你可以逐行输入上面的内容,等输完最后的}'之后,按回车,命令就会立刻执行了——之前的换行只是让你把JSON格式写整齐,shell因为单引号没闭合,会一直等待你输入完整个命令。
方法2:用Here-Document更高效地输入多行内容
如果JSON比较长,手动写容易出错,你可以用shell的here-document功能,把JSON内容放在EOF标记之间,这样写完EOF之后按回车,shell就会把内容作为参数传给AWS命令:
aws s3api put-bucket-policy --bucket my-test-bucket --policy "$(cat <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::my-test-bucket/*" } ] } EOF )"
另外,如果中途不想继续输入了,按Ctrl+C就能终止当前的输入状态,回到正常的终端提示符。
内容的提问来源于stack exchange,提问作者Ew Na
相关产品推荐
相关产品推荐

