2010-03-19 6 views
0

Aidez-nous !!! ;)
J'ai un problème avec ce code dans un fichier batch (Linux):Rapports dans un fichier journal avec un shell de script (batch linux) et redirection


Mil=`date +"%Y%m%d%H%M%S"` 
batch=`echo "${DatMusic}"` 
TabimportEnteteMusic="importentetemusic.dat" 
{ 
    grep '^ENTETE' ${IMPORT}/${DatMusic} > ${IMPORT}/$TabimportEnteteMusic 
    mysql -u basemine --password="basemine" -D basemine -e "delete from importmusic;" 
    mysql -u basemine --password="basemine" -D basemine -e "delete from importentetemusic;" 
} >> $TRACES/batch/$Mil.$batch.log 2>&1 

Quand je lance ce lot, sa réponse est:


/home/mmoine/sgbd_mysql/batch/importMusic.sh: line 51: /batch/20100319160018.afce01aa.cr.log: Aucun fichier ou répertoire de ce type 

______ (en anglais, je suppose: "Aucun fichier ou répertoire trouvé")

Alors, s'il vous plaît, comment puis-je mettre tous les messages générés dans ce fichier journal?

Merci pour vos réponses.
Désolé pour mon anglais;)

+0

Exécuter avec 'LC_ALL = C LANG = C' pour obtenir le message d'erreur en anglais –

Répondre

0

$TRACES/batch/$Mil.$batch.log devient /batch/20100319160018.afce01aa.cr.log donc je suppose que $TRACES n'est pas défini. Le répertoire /batch n'existe pas.

+0

$ TRACE est une variable d'environnement et est défini. Le répertoire /batch a été créé manuellement avant l'exécution de ce lot. :( Thx de toute façon. – Mat

+0

TRACE! = TRACES –

2

vous devez définir votre variable TRACES. En outre, utilisez $() au lieu de backticks autant que possible.

TRACES="something here" 
Mil=$(date +"%Y%m%d%H%M%S") 
batch="${DatMusic}" 
TabimportEnteteMusic="importentetemusic.dat" 
{ 
    grep '^ENTETE' "${IMPORT}/${DatMusic}" > "${IMPORT}/$TabimportEnteteMusic" 
    mysql -u basemine --password="basemine" -D basemine -e "delete from importmusic;" 
    mysql -u basemine --password="basemine" -D basemine -e "delete from importentetemusic;" 
} >> $TRACES/batch/${Mil}.${batch}.log 2>&1 
+0

Thx mais $ TRACE est une variable d'environnement et il existe. :( – Mat

+1

@Mat, 'TRACE' $ ou' $ TRACES'? –

+0

Oui Thx pour tous. Il était Mon erreur, mea culpa ... Mon erreur était que TRACE a été défini mais pas TRACES, et j'utilise TRACES dans mon script Désolé pour mes réponses, j'étais persuadé de faire bien .. Thx encore à vous tous .. ... et désolé pour mon anglais écrit;) Passez une bonne journée! – Mat

1

Le message d'erreur parle du fichier /batch/20100319160018.afce01aa.cr.log.

Cela signifie que $ TRACES/lot/$ {} Mil. $ {Lot} .log est remplacé par /batch/20100319160018.afce01aa.cr.log

Cela signifie que le $ TRACES variable ne peut pas être défini à l'endroit où vous l'utilisez (événement si vous répétez cent fois "$ TRACE est une variable d'environnement et est défini").

Essayez un

echo "\$TRACES $TRACES" 
Questions connexes