web-dev-qa-db-fra.com

Shell Script compare le contenu du fichier avec une chaîne

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!

6
ashutosh tripathi

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
15
chepner

Quelque chose comme ça devrait fonctionner:

s="ABCD"
if [ "$s" == "$(cat test.txt)" ] ;then
    :
else
    echo "They don't match"
fi
7
NickD
str="ABCD"
content=$(cat test.txt)
if [ "$str" == "$content" ];then
    # send your email
fi
5
Scott Wang
if [ "$(cat test.tx)" == ABCD ]; then
           # send your email
else
    echo "Not matched"
fi
0
sachin_ur