找到一个确切的字符串

问题描述 投票:0回答:1

试图确保when条件存在一个确切的字符串,但现在正试图让函数在一个简单的playbook中工作,但似乎无法让它工作。也试过逃避角色

我尝试了不同的变化,并尝试切换到“而不是”,反之亦然

my.conf

JAVA_HOME="/opt/java/hotspot/64_bit/jdk1.8.0_201/"
JAVA_HOME=/opt/java/hotspot/64_bit/jdk1.8.0_201/
JAVA_HOME=/opt/java/hotspot/64_bit/jdk1.8.0_202/
JAVA_HOME="/opt/java/hotspot/64_bit/jdk1.8.0_202/"
SUN_JAVA_HOME=/opt/java/hotspot/64_bit/jdk1.8.0_201/
SUN_JAVA_HOME="/opt/java/hotspot/64_bit/jdk1.8.0_201/"
BAE_JAVA_HOME=/opt/java/hotspot/64_bit/jdk1.8.0_201/
BAE_JAVA_HOME=/opt/java/hotspot/64_bit/jdk1.8.0_202/
BAE_JAVA_HOME="/opt/java/hotspot/64_bit/jdk1.8.0_201/"
BAE_JAVA_HOME="/opt/java/hotspot/64_bit/jdk1.8.0_202/"

剧本

---
- hosts: localhost
  tasks:
  - name: read the passwd file
    shell: cat /tmp/my.conf
    changed_when: False
    register: user_accts

  - name: set regex pattern
    set_fact:
      regex_pattern: ".*^JAVA_HOME=\"/opt/java/hotspot/64_bit/jdk1.8.0_201/\"$"
  - name: a task that only happens if the user exists
    when: user_accts.stdout |match('{{regex_pattern}}')
    debug: msg="user hillsy exists"

我想确保它找到这个JAVA_HOME =“/ opt / java / hotspot / 64_bit / jdk1.8.0_201 /”并且如果我将此行更改为JAVA_HOME =“/ opt / java / hotspot / 64_bit / jdk1.8.0_209 / “它找不到它

ansible
1个回答
0
投票

我想要得到那个确切的字符串,所以我不会在上面的例子中得到其他字符串

如果您正在寻找那个确切的字符串,那么您不需要正则表达式

- debug:
    msg: it matches

  # because an empty list is considered "false", if none of the lines
  # are equal, this will not run
  when: user_accts.stdout_lines | select('eq', the_string) | list
  vars:
    the_string: JAVA_HOME="/opt/java/hotspot/64_bit/jdk1.8.0_201/"
© www.soinside.com 2019 - 2024. All rights reserved.