Como eu posso passar um nome de arquivo contendo sinais de porcentagem (%) como um parâmetro para um script de shell no cron? [duplicado]

2
    

Esta pergunta já tem uma resposta aqui:

    

Atualmente, configuramos uma tarefa cron para nosso novo script, conforme abaixo:

46 22 * * * /gzm_common/diagbat9/global/prod/chgstatus.sh /backups/diagbat9/Demantra/output/SK_ITEM_EXTRACT_MFGPRO_$(date +%m%d%y).txt

Leva o arquivo com .txt como extensão como parâmetro. Quando o cron job é executado, o arquivo não é criado. Isto é o que obtivemos do arquivo às 22:46:

22:46    SK_ITEM_EXTRACT_MFGPRO_

e este é um arquivo de zero byte, ao passo que deve conter muitos dados. Devo tentar colocar o caminho de arquivo inteiro e o nome entre aspas duplas?

    
por arpita dhote 22.08.2014 / 12:57

1 resposta

3

Você precisa escapar dos caracteres percentuais usando uma barra invertida:

.../SK_ITEM_EXTRACT_MFGPRO_$(date +\%m\%d\%y).txt

Na página crontab(5) man da implementação do ISC de cron :

The ''sixth'' field (the rest of the line) specifies the command to be run. The entire command portion of the line, up to a newline or % character, will be executed by /bin/sh or by the shell specified in the SHELL variable of the crontab file. Percent-signs (%) in the command, unless escaped with backslash (\), will be changed into newline characters, and all data after the first % will be sent to the command as standard input. There is no way to split a single command line onto multiple lines, like the shell's trailing "\".

    
por 22.08.2014 / 13:03

Tags