Você pode tentar o seguinte código, como um script bash
:
#!/bin/bash
while getopts "d:f:e:r:a" opt; do
case $opt in
f) FDATE=$(awk -v fmt="$OPTARG" '{print strftime(fmt)}'<<<DUMMY) ;;
r) PREFIX="$OPTARG" ;;
e) SUFFIX="$OPTARG" ;;
d) DEST="$OPTARG" ;;
a) APPEND=true ;;
esac
done
if [ ! $APPEND ]
then
> ${DEST}/${PREFIX}.${FDATE}.${SUFFIX}
fi
while read line; do echo ${line} >> ${DEST}/${PREFIX}.${FDATE}.${SUFFIX}; done
Você também pode cercar o corpo do script com:
pushtolog()
{
...
}
e fonte.
Também incluí um sinalizador para poder anexar aos dados existentes. Deve ser fácil alterar o script para padrão para acrescentar e sobrescrever quando uma opção específica é definida.
Nota 1 : o formato de data deve estar em conformidade com strftime
(consulte man strftime
), por isso, use "%Y-%m-%d"
Nota 2 : essa variável APPEND
não é na verdade um booleano, imagino que sim. Talvez seja mais legal usar APPEND="true"
e if [ -z "$APPEND" ]