向Ansible Expect(或Shell)模块发送退格键(以回答术语)

时间:2018-09-25 09:41:54

标签: shell ansible

- name : Execute the script and answer to question in term
  expect:
    command: ./"{{ script_name }}"
    responses:
      Question:
        - ''
        - ''
        - ''
        - 'backspace' #?


  become: yes

我想使用退格键,因为我使用的脚本是预先回答的,所以如果我还可以的话,我只需要按Enter键,但是对于一个问题,我想更改给定的答案。但是到目前为止,我还没有找到使用退格键的方法。有人会知道吗?

1 个答案:

答案 0 :(得分:2)

退格的ASCII控件为'\b'。这适用于双引号:

- name : Execute the script and answer to question in term
  expect:
  command: "echo Q"
  echo: "yes"
  responses:
   Q: "b\bc"
例如,

将打印返回到标准输出1^Hc,其中^H实际上是退格控件。

这只能使光标向后移动,而不能删除前一个字符。例如,在我的bash shell中:

/bin/bash -c "echo a$'\b'"

产生a作为输出,但是

/bin/bash -c "echo a$'\b'c"

产生c,因为光标被移回了a,所以被覆盖了。