我有一个非常复杂的命令,我需要通过shell:命令运行,但它有各种我需要保留的特殊字符。我还希望能够在多个环境的命令行中添加vars。
我应该如何格式化这样,所以我不会得到各种古怪的错误。
shell:OC_EDITOR =“sed -i's / node-selector:。* / node-selector:\”region = primary,zone = blah \“/'”oc edit namespace default
稍后我会将区域更改为变量{{zone}}
答案 0 :(得分:0)
您可以将环境变量用作任务和注册变量。我没试过这个,但它可能会奏效。
- name: Echo OC_EDITOR
shell: "echo $OC_EDITOR"
environment:
OC_EDITOR: "sed -i 's/node-selector:.*/node-selector: \"region=primary, zone=blah\"/'" oc edit namespace default
register: sed_command
- name: Execute OC_EDITOR
shell: sed_command
答案 1 :(得分:0)
我遇到的问题是单引号而不是反斜杠。没有其他角色需要转义。我还用单引号包装了整个命令。
这是通过--check函数完成的最终工作命令。我正在重新运行以验证它的工作原理..
- name: EXECUTE - Change the node selectors for the default and openshift-infra projects
shell: 'OC_EDITOR="sed -i ''s/node-selector:.*/node-selector: \region=infra, zone=blah\"/''" oc edit namespace default'
ignore_errors: True
希望这可以帮助那些人。
更新并删除了额外的反斜杠。