0
votes

Arrêter le message du grep de la publication

Je travaille sur un script qui prend 1 argument de chaîne et un fichier. Je le veux afin que si un fichier soit mis dans celui-ci n'existe pas, il affichera le nom " le nom de fichier em> ne peut pas être lu" Message "

Cette partie fonctionne, mais il affiche également un" Grep: grep.txt: aucun message de fichier ou de répertoire de ce type. Existe-t-il un moyen d'arrêter le message GREP d'afficher et de mettre fin au script si la première instruction si elle est vraie? P>

#! /bin/sh
if [ ! -f "$2" ]
then
    echo "$0" cannot be read 1>&2
fi

if [ $# -eq 2 ]
then
    grep "$1" $2
else
    echo there is more or less than 2 arguments 1>&2
fi


0 commentaires

3 Réponses :


0
votes

Vous pouvez ajouter / dev / null dans la commande grep, il supprimera la partie d'erreur.

grep "$1" $2 2>/dev/null


0 commentaires

0
votes

Quitter le script avec un code de sortie non nul pour indiquer une panne et l'arrêter de continuer sur le grep code>.

if [ ! -f "$2" ]
then
    echo "$0" cannot be read 1>&2
    exit 1
fi


0 commentaires

0
votes

Vous pouvez rediriger toutes les erreurs de grep, par exemple:

grep "1 $" $ "$ 2 2> / dev / null

(Le 2> < / code> signifie une erreur standard de redirection, par opposition à la sortie standard avec > ou 1> ).

qui introduit une condition de course, cependant: si Le fichier disparaît lorsque votre script est en cours d'exécution, il pourrait toujours exister lorsque vous vérifiez qu'il existe, mais être parti à l'époque grep exécute.

Vous pouvez gérer cela en vérifiant le Statut de sortie ... xxx

IMHO, dans cet exemple, il serait préférable de simplement laisser grep Imprimer l'erreur.


0 commentaires