myscript.sh > output_$(date +%Y%m%d)
Eu tenho um script de shell que gera algumas saídas. A saída é gravada em um arquivo. No meu cronjob eu tenho isso: ./myscript.sh --options > saída Como o cronjob é executado toda semana, eu gostaria de manter uma lista de saídas em vez de sobrescrevê-las toda vez que o script for executado. Então, idealmente, eu gostaria de ter o nome do arquivo de saída como output_ data . Data é a data de execução do script atual. No Unix, o comando date pode fornecer informações sobre a data atual, mas como eu poderia integrar isso no nome do arquivo de saída?
Atualização:
Já experimentou os métodos de Heath e wfaulk, funciona bem. No entanto, quando coloco o mesmo comando no cronjob, comecei a receber o erro: / bin / sh: -c: linha 0: EOF inesperado ao procurar correspondência ')' / bin / sh: -c: linha 1: erro de sintaxe: fim de arquivo inesperado
Eu sei que é causado pela saída para um arquivo chamado output _ $ (date +% Y% m% d) já que essa foi a única alteração que fiz. Existe uma maneira diferente de fazer isso no cronjob?
O comando date faz o que você pediu, mas logrotate é para o que você está tentando fazer e vai manter as coisas limpas ... Vale a pena aprender na minha opinião.
./myscript.sh --options > output_$(date)
Mas você provavelmente quer usar um formato de data diferente para que não tenha espaços e lixo nele. Algo como:
./myscript.sh --options > output_$(date +%Y%m%d.%H%M%S)
Na chance de que seu shell não suporte a sintaxe $ (), substitua o $(
e seu )
correspondente por um com " '
" (backtick).
./ myscript.sh --options > saída _ $ (data)