Script de shell para atualizar a data (T) com T + 2 em um arquivo de texto

0

digamos, a data que aparece no arquivo de texto na 4ª posição no formato DD-Mmm-YYYY, eu preciso atualizar a data T com T + 2. se o dia for falso em Qui ou Sex a data deve ser substituída por T + 4. ignore os finais de semana.

Eu tentei um script, mas minha condição if não está funcionando

#!/bin/sh
if [ $# -ne 1 ]
then echo "Usage: read.sh filename";
exit 1;
fi

while read line
 do
  echo $line
 olddate=$(echo $line | cut -d, -f4)
echo "olddate $olddate"
echo $(date -d $olddate +%a)
if [ "date -d $olddate +%a" = Thu ] || [ "date -d $olddate +%a" = Fri ]; then
newdate=$(date +%d-%b-%Y -d "$olddate 4 day")
else
newdate=$(date +%d-%b-%Y -d "$olddate 2 day")
fi
echo "newdate $newdate"
record=$(echo $line | sed "s|${olddate}|${newdate}|")
echo "new record $record"
done < $1
    
por Amit Singh 10.01.2018 / 17:35

1 resposta

0

Para essas duas comparações, você forneceu duas strings que sempre irão comparar false, então elas precisam ser substituídas por uma substituição de comando:

if [ "date -d $olddate +%a" = Thu ] || [ "date -d $olddate +%a" = Fri ]; then
    newdate=$(date +%d-%b-%Y -d "$olddate 4 day")
else
    newdate=$(date +%d-%b-%Y -d "$olddate 2 day")
fi

ou seja

today="$(date -d $olddate +%a)"
if [ "$today" = Thu ] || [ "$today" = Fri ]; then
    newdate=$(date +%d-%b-%Y -d "$olddate 4 day")
else
    newdate=$(date +%d-%b-%Y -d "$olddate 2 day")
fi
    
por 19.01.2018 / 15:04