【问题标题】:How do I remove the character ? from a log file name?如何删除字符?从日志文件名?
【发布时间】:2020-08-26 10:06:42
【问题描述】:

每次运行剧本时,我都有一个由 ansible 创建的日志文件。不知道为什么有一个?插入。

getcpu_and_mem_lin?2020-08-25.log

如何删除?在文件中?

如何添加 .代替?代替?

一些背景: 我有一个用于 ansible 的 shell 包装器,可以为我提供一个新的日志文件,其中包含 playbook 名称和日期/时间以及我的 .bashrc 中的别名。

ansible-playbook-wrapper.sh

#!/bin/bash

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

ansible-playbook $@

在我的 .bashrc 中


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

【问题讨论】:

    标签: linux ansible


    【解决方案1】:

    问:“如何添加 . 来代替 ?”

    简答:分开命令并在它们之间加上点

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

    包装器的第一个参数应该是剧本文件。让我们用playbook.yml替换$1并测试它

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

    这给了我们 2 行。这不是我们想要的。让我们测试一下环境变量

    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
    

    由于换行,playbook2020-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
    

    很好。没有空间。让我们让它更具可读性并添加一个点“。”在playbook2020-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
    

    【讨论】:

      猜你喜欢
      • 2019-09-21
      • 1970-01-01
      • 2016-08-06
      • 1970-01-01
      • 2018-10-17
      • 1970-01-01
      • 1970-01-01
      • 2016-07-12
      • 1970-01-01
      相关资源
      最近更新 更多