Как мне удалить символ? из имени файла журнала?

#linux #ansible

#linux #ansible

Вопрос:

У меня есть файл журнала, создаваемый ansible при каждом запуске playbook. Не уверен, почему существует? вставлено.

getcpu_and_mem_lin?2020-08-25.log

Как мне удалить? в файле?

Как бы мне добавить . вместо ? вместо этого?

Немного предыстории: у меня есть оболочка-оболочка для ansible, которая выдает мне новый файл журнала с названием playbook и датой / временем с псевдонимом в моем .bashrc.

ansible-playbook-wrapper.sh

 #!/bin/bash

export ANSIBLE_LOG_PATH=/home/myuser/log/$(echo $1 | cut -d . -f 1 amp;amp; date " %Y-%m-%d").log

ansible-playbook $@
  

В моем .bashrc

 
alias ansible-playbook="/home/myuser/ansible-playbook-wrapper.sh"
  

Ответ №1:

Вопрос: «Как бы мне добавить a . вместо?»

Краткий ответ: Разделите команды и поставьте точку между ними

 $(echo $1 | cut -d . -f 1).$(date " %Y-%m-%d")
  

Первым параметром оболочки должен быть файл playbook. Давайте заменим $1 на playbook.yml и протестируем это

 shell> echo playbook.yml | cut -d . -f 1 amp;amp; date " %Y-%m-%d"
playbook
2020-08-26
  

Это дало нам 2 строки. Это не то, что мы хотим. Давайте протестируем переменную среды

 shell> export ANSIBLE_LOG_PATH=/home/myuser/log/$(echo playbook.yml | cut -d . -f 1 amp;amp; date " %Y-%m-%d").log

shell> echo $ANSIBLE_LOG_PATH
/home/myuser/log/playbook 2020-08-26.log
  

Из-за новой строки между playbook и 2020-08-26 есть пробел. Давайте исправим это и запустим команды отдельно

 shell> export ANSIBLE_LOG_PATH=/home/myuser/log/$(echo playbook.yml | cut -d . -f 1)$(date " %Y-%m-%d").log

shell> echo $ANSIBLE_LOG_PATH
/home/myuser/log/playbook2020-08-26.log
  

Хорошо. Нет пробела. Давайте сделаем его более читаемым и поставим точку ‘.’ между playbook и 2020-08-26

 shell> export ANSIBLE_LOG_PATH=/home/myuser/log/$(echo playbook.yml | cut -d . -f 1).$(date " %Y-%m-%d").log

shell> echo $ANSIBLE_LOG_PATH
/home/myuser/log/playbook.2020-08-26.log