如何在远程计算机上的文件中逐行读取

时间:2019-08-20 07:51:13

标签: ansible

第一行:/u01/app/oracle/oradata/TEST/

第二行:/u02/

如何使用同一个变量读取同一行中的两行,我想通过ansible中的shell命令了解当前的工作目录

2 个答案:

答案 0 :(得分:1)

下面的任务从文件创建行列表

- set_fact:
    lines_list: "{{ lines_list|default([]) + [item] }}"
  with_lines: cat /path/to/file

可以创建两个列表

"lines_list": [
    "/u01/app/oracle/oradata/TEST/", 
    "/u02/"
]

和字典

"lines_dict": {
    "0": "/u01/app/oracle/oradata/TEST/", 
    "1": "/u02/"
}

使用 combine 过滤器

- set_fact:
    lines_dict: "{{ lines_dict|default({})|combine({idx: item}) }}"
  with_lines: cat /path/to/file
  loop_control:
    index_var: idx

可以从已注册的变量中打印“通过shell命令当前存在的工作目录”。例如

- command: echo $PWD
  register: result
- debug:
    var: result.stdout

(未经测试)

答案 1 :(得分:1)

您可以使用命令从磁盘读取文件

  - name: Read a file into a variable
    command: cat /path/to/your/file
    register: my_variable

然后执行以下操作,循环遍历文件中的行。

- debug: msg="line: {{ item }}"
  loop: y_variable.stdout_lines