J'ai une chaîne "ABCD" et un fichier test.txt. Je veux vérifier si le fichier n'a que ce contenu "ABCD". Habituellement, je reçois le fichier avec "ABCD" uniquement et je veux envoyer des notifications par e-mail lorsque je reçois autre chose que cette chaîne, donc je veux vérifier cette condition. Aidez-moi!
Mise à jour: ma réponse d'origine lirait inutilement un fichier volumineux en mémoire lorsqu'il ne pourrait pas correspondre Tout fichier multi-lignes échouerait, vous n'avez donc qu'à lire deux lignes au maximum. Lisez plutôt la première ligne. S'il ne correspond pas à la chaîne, o si un deuxième read
réussit, peu importe ce qu'il lit, alors envoyez l'e-mail.
str=ABCD
if { IFS= read -r line1 &&
[[ $line1 != $str ]] ||
IFS= read -r $line2
} < test.txt; then
# send e-mail
fi
Il suffit de lire l'intégralité du fichier et de le comparer à la chaîne:
str=ABCD
if [[ $(< test.txt) != "$str" ]]; then
# send e-mail
fi
Quelque chose comme ça devrait fonctionner:
s="ABCD"
if [ "$s" == "$(cat test.txt)" ] ;then
:
else
echo "They don't match"
fi
str="ABCD"
content=$(cat test.txt)
if [ "$str" == "$content" ];then
# send your email
fi
if [ "$(cat test.tx)" == ABCD ]; then
# send your email
else
echo "Not matched"
fi