冒号命令参数中冒号的语法错误
问题描述:
我正在开发维护Kubernetes群集的剧本。有一个命令我必须执行添加在ETCD一个条目:冒号命令参数中冒号的语法错误
- command: etcdctl mk /kube-centos/network/config "{ \"Network\": \"172.30.0.0/16\", \"SubnetLen\": 24, \"Backend\": { \"Type\": \"vxlan\" } }"
当试图执行,Ansible给出了第一个冒号语法错误:
- command: etcdctl mk /kube-centos/network/config '{ "Network": "172.30.0.0/16", "SubnetLen": 24, "Backend": { "Type": "vxlan" } }'
^here
我想不出如何逃避这些角色。将JSON参数传递给像这样的命令的最佳方式是什么?
实际上有两种方法来解决这个问题:
回答1
环绕在单引号整个命令:
- command: 'etcdctl mk /kube-centos/network/config "{ \"Network\": \"172.30.0.0/16\", \"SubnetLen\": 24, \"Backend\": { \"Type\": \"vxlan\" } }"'
答案2(首选)
个环绕在双引号中的所有冒号:
- command: etcdctl mk /kube-centos/network/config "{ \"Network\"":" \"172.30.0.0/16\", \"SubnetLen\"":" 24, \"Backend\"":" { \"Type\"":" \"vxlan\" } }"
答
最简单的方法是用双引号括起冒号。始终工作。
- command: etcdctl mk /kube-centos/network/config "{ \"Network\"":" \"172.30.0.0/16\", \"SubnetLen\"":" 24, \"Backend\"":" { \"Type\"":" \"vxlan\" } }"
只需用双引号括起来。看到我的答案。 – helloV