-1

我正在使用 ansible 的 lineinfile 来更新文件。

一旦我更新了文件 - 有效 - 文件在每一行的末尾都有 ^M 字符。

这种行为是不可取的 - 我该如何关闭它?然后我需要dos2unix才能纠正,这似乎违反直觉?

- name: Update database.php - username
  lineinfile:
    dest: /var/www/html/database.php
    regexp: '^\$username.*$'
    line: "$username = '{{ mariadb_rc_user }}';"
    backrefs: yes

编辑说明 模板和副本是可能的,但在这种情况下很难使用,原因我不会讨论,但我只想说:如果有意义的话,我会使用它们。

4

1 回答 1

0

我找到了答案,这与我的预期相反。lineinfile 和 replace(请参阅重复链接以获取建议的解决方案)都不是问题。事实上,他们正在做各自的工作 - 并以换行结束行。

出现问题是因为在此之前文件只有 CLRF 终止符,当它们单独存在时它们是不可见的。

当引入 LF 时,会在 vim 中打印 CRLF (^M) 以区分现在有两种类型的行终止符。

于 2018-08-02T00:14:09.870 回答