Inserir variável e manter a variável

1

Estou no VMWare que, não importa o que alguém diga, responde à maioria dos comandos unix.

Algumas coisas são únicas, por exemplo, o fato de que quase nenhum arquivo é persistente durante a reinicialização. Devido a isso, estou tendo um problema com um backup com script que está usando uma variável para nomear arquivos de log:

Se eu inserir manualmente

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

em cron , os arquivos de log serão, obviamente, nomeados após a data em que foram iniciados. No entanto, se eu inserir isso em local.sh para reinserir o trabalho cron na reinicialização;

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

isso vai acabar assim:

backup-2014-07-01.log

Então, a questão é como eu escrevo isso em cron , de modo que acabe como uma variável em vez de uma data?

    
por Phatsta 01.07.2014 / 09:20

1 resposta

1

O sinal de dólar em sua string está sendo expandido no momento em que o eco é executado e fazendo com que a substituição do comando ocorra. O que você quer é passar a string AS A STRING para o arquivo. Há duas maneiras de impedir que a substituição ocorra.

  1. Você pode escapar do cifrão:

     /bin/echo "0 0 * * 1-5 ../..backup-\$(date +%Y-%m-%d).log"
    
  2. Você pode usar aspas simples em vez de duplas para envolver a string:

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

De qualquer forma, você pode testar esta declaração em qualquer shell para ver se ela fornece a string literal ou executa a substituição.

    
por 01.07.2014 / 10:13

Tags