Синтаксическая ошибка в скрипте для проверки даты модификации файла

В качестве специальной команды -Специальная команда:

ansible '<hosts>' -m lineinfile -a "dest=/etc/lvm/lvm.conf backrefs=yes regexp='^(locking_dir)' line='\1 = \"/run/lock\"' state=present"

Как часть пьесы:

- lineinfile:
    dest: /etc/lvm/lvm.conf
    backrefs: yes
    regexp: '^(locking_dir)'
    line: '\1 = \"/run/lock\"'
    state: present

Я полагаю, что lvm.confбудет иметь только одну строку, начинающуюся с locking_dir, поэтому я не удосужился использовать регулярное выражение для сопоставления всей строки. В противном случае регулярное выражение было бы чем-то вроде'^locking_dir = \"/var/lock/lvm\"'

0
07.11.2019, 22:24
1 ответ

Ваша непосредственная проблема может заключаться в этой строке:

last_modified='stat -c "Y" $/home/userr/textfile'

Здесь вы присваиваете переменной строку stat -C "Y".... Вместо этого вы можете назначить вывод команды, например stat -c %Y /home/userr/textfile, которую вы можете написать следующим образом:

last_modified="$(stat -c %Y /home/userr/textfile)"

Я рекомендую использовать #!/bin/sh -eдля всех сценариев оболочки (вам здесь не нужен bash:))где -eвключает отказоустойчивое -быстрое поведение, чтобы ошибки не оставались незамеченными.

2
28.01.2020, 02:29

Теги

Похожие вопросы