/ / Bash-Skript prüft Zeichenfolgen in der Datei - Linux, Bash, Scripting

Bash Script Check Strings in Datei - Linux, Bash, Scripting

Wie mache ich etwas wie:

if !("abc" in file1 and "def" in file2)
then
echo "Failed"
fi

Ich wusste bereits, wie man "abc" in file1 überprüft: grep -Fxq "abc" file1, aber ich kann es nicht schaffen if not (command1 and command2) Teil zur Arbeit.

Antworten:

4 für die Antwort № 1

Du hast es fast richtig verstanden. Fügen Sie einfach ein Leerzeichen zwischen dem Ausrufezeichen und den grep-Befehlen hinzu und es würde funktionieren:

if ! (grep -Fxq "abc" file1 && grep -Fxq "def" file2); then
echo "Failed"
fi

Angenommen bashEs besteht keine Notwendigkeit für extra else.

Beachten Sie, dass die Verwendung von Klammern die Greps in einer Subshell-Umgebung als Child-Shell-Prozess ausführt. Sie können dies leicht vermeiden, indem Sie geschweifte Klammern verwenden (diese Funktion heißt Gruppenbefehl):

if ! { grep -Fxq "abc" file1 && grep -Fxq "def" file2; }; then
echo "Failed"
fi

Beachten Sie, dass Sie mehr Leerzeichen und ein zusätzliches Semikolon benötigen - isn "t bash Syntax nur so lustig!?!


2 für die Antwort № 2

Du könntest es tun:

$ grep -Fxq "abc" file1 && grep -Fxq "def" file2 || echo "Failed"

Dies verwendet die bash logische Operatoren UND && und ODER ||.

Dies kann auf mehrere Zeilen aufgeteilt werden:

$ grep -Fxq "abc" file1 &&
> grep -Fxq "def" file2 ||
> echo "Failed"

2 für die Antwort № 3
if (grep -Fxq "abc" file1 && grep -Fxq "def" file2);
then
echo ""
else
echo "failed"
fi