Vous avez quelques erreurs dans votre script. S'il vous plaît essayer le ci-dessous:
#!/bin/bash
# capture the seconds since epoch minus 2 days
NOW=`expr $(date '+%s') - 172800`
# read every line in the file myfile.txt
while read -r line;
do
# remove the unwanted words and leave only the date info
s=`echo $line | cut -d ':' -f 2,4`
# parse the string s into a date and capture the number of seconds since epoch
date=$(date -d "$s" '+%s')
# compare and print output
if [ $date -lt $NOW ]; then
echo "Date Less then 2 days, s=$s, date=$date, now=$NOW"
else
echo "Date Greater then 2 days, s=$s, date=$date, now=$NOW"
fi
done < myfile.txt
Cependant, cela ne fonctionnera pas: $dateFile=grep "After :" myfile.txt | cut -d ':' -f 2,4
. Dans le shell, vous ne pouvez pas préfixer un nom de variable avec $
puisque le shell essayera d'évaluer le résultat en tant que variable et aussi pour exécuter une commande et l'assigner à une variable que vous devez entourer dans $(....)
ou avec des guillemets.
Exemple avec la variable et la tuyauterie au tout:
#!/bin/sh
dateFile=`grep "After :" my.txt | cut -d ':' -f 2,4`
# capture the seconds since epoch minus 2 days
NOW=`expr $(date '+%s') - 172800`
echo "$dateFile" | while read -r line;
do
# parse the string s into a date and capture the number of seconds since epoch
date=$(date -d "$line" '+%s')
# compare and print output
if [ $date -lt $NOW ]; then
echo "Date Less then 2 days, s=$line, date=$date, now=$NOW"
else
echo "Date Greater then 2 days, s=$line, date=$date, now=$NOW"
fi
done
Exemple redirigeant la grep et le temps:
#!/bin/sh
# capture the seconds since epoch minus 2 days
NOW=`expr $(date '+%s') - 172800`
grep "After :" myFile.txt | cut -d ':' -f 2,4 | while read -r line;
do
# parse the string s into a date and capture the number of seconds since epoch
date=$(date -d "$line" '+%s')
# compare and print output
if [ $date -lt $NOW ]; then
echo "Date Less then 2 days, s=$line, date=$date, now=$NOW"
else
echo "Date Greater then 2 days, s=$line, date=$date, now=$NOW"
fi
done
L'espoir que cela clarifie vos questions.
Votre code fonctionne parfaitement. Je vous remercie. Je me demandais juste pourquoi vous auriez besoin d'une boucle pour lire chaque ligne du fichier car la commande grep obtiendra automatiquement les informations dont vous avez besoin ??? – user1736786
J'ai modifié ma réponse pour répondre à votre question. Veuillez le sélectionner comme réponse correcte si vous en êtes satisfait. – artemisian