插入变量并保留变量

插入变量并保留变量

我使用的是 VMWare,无论别人怎么说,它都能响应大多数 UNIX 命令。

但有些事情是独一无二的,例如几乎没有文件在重新启动后会保持不变。因此,我遇到了脚本备份的问题,该备份使用变量来命名日志文件:

如果我手动插入

backup-$(date +%Y-%m-%d).log

到 中cron,日志文件当然会以其启动日期命名。但是,如果我将其插入local.sh以在重新启动时重新输入cron作业;

/bin/echo "0 0 * * 1-5 ...backup-$(date +%Y-%m-%d).log

它当然会像这样结束:

backup-2014-07-01.log

所以问题是如何将其写入cron,以便它最终成为变量而不是日期?

答案1

字符串中的美元符号在运行 echo 时被扩展,并导致随后发生命令替换。你想要的是传递那个字符串作为字符串到文件上。有两种方法可以防止替换发生。

  1. 您可以逃避美元符号:

     /bin/echo "0 0 * * 1-5 ../..backup-\$(date +%Y-%m-%d).log"
    
  2. 您可以使用单引号而不是双引号来包裹字符串:

    /bin/echo '0 0 * * 1-5 ../..backup-$(date +%Y-%m-%d).log'
    

无论哪种方式,您都可以从任何 shell 测试此语句,看看它是否为您提供文字字符串或运行替换。

相关内容