Ist es möglich, die Pipeline mehrere Befehle in einem 'if' - Anweisung?

Teil von einem script, das ich Schreibe, muss überprüfen, verschiedene text-Dateien für den gleichen Saiten. Vorher hatte ich nur für das prüfen einer Datei, so hatte ich eine lange Liste von strings innerhalb cateogies suchen für die als Variablen definiert. Später im Skript die variabled genannt werden und für die Ausgabe auf dem Bildschirm, wenn eine übereinstimmung vorhanden ist:

category_1=$(sudo zcat myfile | egrep -c 'Event 1|Event 2|Event 3')

category_2=$(sudo zcat myfile | egrep -c 'Event 4|Event 5|Event 6')

category_3=$(sudo zcat myfile | egrep -c 'Event 7|Event 8|Event 9')

...

echo Category 1

if [[ $category_1 -ge 2 ]];then

            echo There were $category_1 events

elif [[ $category_1 -eq 1 ]]; then

            echo There was $category_1 event

fi

etc, etc...

Nun muss ich es ändern, so dass ich überprüfen kann das grep strings gegen mehrere text-Dateien. Ich habe versucht zu definieren, werden die neuen Dateien als Variablen und Rohr-Sie in der if-Anweisung mit der grep-variable ohne Erfolg:

category_1=$(egrep -c 'Event 1|Event 2|Event 3')

category_2=$(egrep -c 'Event 4|Event 5|Event 6')

category_3=$(egrep -c 'Event 7|Event 8|Event 9')


myfile=$(sudo zcat myfile)

myfile2=$(sudo zcat myfile2)

myfile3=$(sudo zcat myfile3)

...

echo Category 1 - Myfile



if [[ myfile | $category_1 -ge 2 ]];then

            echo There were $category_1 events in myfile

elif [[ myfile | $category_1 -eq 1 ]]; then

            echo There was $category_1 event in myfile

fi

Es scheint, dass ich kann nicht pipe-Befehle in eine if-Anweisung.

InformationsquelleAutor Hxwk | 2013-12-16
Schreibe einen Kommentar