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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
$(...)
zu erfassen Ausgabe eines Befehls in einen string:Können Sie Rohre in
if
, aber Sie vermischen zwei Dinge.Verwenden Sie
$category_1
mit Rohr; und$category_1
ist nicht ein Befehl.Sie können eine Kommando-substitution anstelle der variable.
und so weiter.
Können Sie auch Variablen verwenden, statt der Befehle, aber es wird ein wenig seltsam.
Könnten Sie stattdessen verwenden Sie einen Befehl wie: if [ "$Haus" = "nice" ]||[ "$Haus" = "schlecht"], dann... um die Arbeit zu tun