bash - Ansible shell 模块中的 awk 提供了意外的换行符或字符串结尾
问题描述
- shell: " su {{user}} -c 'ps -ef | awk \'{print $2}\''"
register: result
{print 后收到意外的换行符或字符串结尾错误
我必须使用 su 而不是成为插件,还必须使用 awk 过滤输出
有没有办法为下面的命令转义“内部打印。(\”不起作用)
"su {{user}} -c 'ps -ef | awk \'{print "$2"}\''"
解决方案
实现目标的逃避可能性的非详尽列表。这里的问题是 yaml 在到达您的 shell 之前应用了自己的转义序列。你可以找到更多的可能性。
取1:
- shell: "su {{ user }} -c \"ps -ef | awk '{print \\$2}'\""
register: result
取2:
- shell: su {{ user }} -c "ps -ef | awk '{print \$2}'"
register: result
取3:
- shell: su {{ user }} -c 'ps -ef | awk "{print \$2}"'
register: result
采取 4(来自@Paolo 的修复解决方案):
- shell: su {{ user }} -c 'ps -ef | awk '\''{print $2}'\'
register: result
...最终将继续...
推荐阅读
- asp.net-core - 如何更改 Swagger 中控制器的顺序?
- java - Spring REST - 将 GET 参数绑定到嵌套对象列表
- regex - 获取基于正则表达式的内容以分隔变量
- typescript - 仅从集合中收集特定类型值的键
- google-apps-script - 有没有办法可以将鼠标悬停事件添加到谷歌脚本编辑器中的图像?
- c# - CancellationToken 是否删除文件锁定?
- c++ - 如何在重命名函数 (c++) 中使用变量?
- java - 使用最大位数将字符串验证为 Double
- html - 链接为图像不起作用,但适用于文本
- tfs - 尝试在 Visual Studio 2017 中查看源代码管理资源管理器时出现“找不到网络路径”