Discussion:
wie in bash-Skript if und grep und and vereinen?
(zu alt für eine Antwort)
Astrid
2020-10-13 16:01:39 UTC
Permalink
Hallo!

Bin leider nicht so der Bash-Spezialist, moechte mittels einem bash-Skript feststellen, ob in 2 Dateien ein bestimmtes Wort drin vorkommt,
und falls ja, dann dies, falls nein, dann das machen.

#!/bin/bash
if [ grep -q WOrt1 ${WM_PROJECT_DIR}/pfad1/datei1.txt && grep -q WOrt1 ${WM_PROJECT_DIR}/pfad2/datei2.txt ]; then
echo ja
else
echo nein
fi

Zeile 2: [: Fehlende `]'
nein

Das macht es leider auch nicht besser:

#!/bin/bash
if [ grep -q WOrt1 ${WM_PROJECT_DIR}/pfad1/datei1.txt ] && [ grep -q WOrt1 ${WM_PROJECT_DIR}/pfad2/datei2.txt ]; then
echo ja
else
echo nein
fi

Zeile 2: [: Zu viele Argumente.
nein

Und selbst, wenn ich mich erstmal nur auf ein if beschraenke, dann kommt
immer 'nein' raus, egal, ob das Wort in der Datei enthalten ist, oder nicht.
Pfad/Dateiname sind richtig und existieren.

Wie kann ich das zum Funktionieren bringen?

Gruss, Astrid
Michael Kallweitt
2020-10-13 16:30:04 UTC
Permalink
Post by Astrid
#!/bin/bash
if [ grep -q WOrt1 ${WM_PROJECT_DIR}/pfad1/datei1.txt && grep -q WOrt1 ${WM_PROJECT_DIR}/pfad2/datei2.txt ]; then
echo ja
else
echo nein
fi
Zeile 2: [: Fehlende `]'
Kann es sein, dass ${WM_PROJECT_DIR} irgendwelche »bösen« Zeichen enthält?
--
michael.kallweitt.art
»Meine Stücke wachsen nicht von vorne nach hinten, sondern von innen nach
außen.« Pina Bausch https://de.wikipedia.org/wiki/Pina_Bausch#Inszenierung
Astrid
2020-10-13 16:54:15 UTC
Permalink
Ist da was von "boese"?

echo $WM_PROJECT_DIR
/opt/OpenFOAM/OpenFOAM-8

Der Pfad kann aber auch ein anderer sein, daher
die Abfrage ueber die Umgebungsvariable
Ulli Horlacher
2020-10-13 16:54:40 UTC
Permalink
Post by Astrid
Hallo!
Bin leider nicht so der Bash-Spezialist, moechte mittels einem bash-Skript feststellen, ob in 2 Dateien ein bestimmtes Wort drin vorkommt,
und falls ja, dann dies, falls nein, dann das machen.
#!/bin/bash
if [ grep -q WOrt1 ${WM_PROJECT_DIR}/pfad1/datei1.txt && grep -q WOrt1 ${WM_PROJECT_DIR}/pfad2/datei2.txt ]; then
echo ja
else
echo nein
fi
Zeile 2: [: Fehlende `]'
[ ist ein bash Kommando, nach dem kein externes Programm kommen darf.
Siehe: help [
Post by Astrid
Wie kann ich das zum Funktionieren bringen?
1) korrekte Syntax verwenden
2) germanisches locale ABSCHALTEN!

zu 1)

if grep -q WOrt1 "${WM_PROJECT_DIR}/pfad1/datei1.txt" && grep -q WOrt1 "${WM_PROJECT_DIR}/pfad2/datei2.txt"; then
echo ja
else
echo nein
fi
--
Ullrich Horlacher Server und Virtualisierung
Rechenzentrum TIK
Universitaet Stuttgart E-Mail: ***@tik.uni-stuttgart.de
Allmandring 30a Tel: ++49-711-68565868
70569 Stuttgart (Germany) WWW: http://www.tik.uni-stuttgart.de/
Enrik Berkhan
2020-10-13 17:13:30 UTC
Permalink
Post by Astrid
Bin leider nicht so der Bash-Spezialist, moechte mittels einem bash-Skript feststellen, ob in 2 Dateien ein bestimmtes Wort drin vorkommt,
und falls ja, dann dies, falls nein, dann das machen.
#!/bin/bash
if [ grep -q WOrt1 ${WM_PROJECT_DIR}/pfad1/datei1.txt && grep -q WOrt1 ${WM_PROJECT_DIR}/pfad2/datei2.txt ]; then
echo ja
else
echo nein
fi
Zeile 2: [: Fehlende `]'
nein
Probier mal ganz ohne die eckigen Klammern. '[' ist ein Kommando (== test),
keine Klammer im syntaktischen Sinne.

Viele Grüße,
Enrik
Sieghard Schicktanz
2020-10-13 18:02:39 UTC
Permalink
Hallo Astrid,
Post by Astrid
Bin leider nicht so der Bash-Spezialist, moechte mittels einem
bash-Skript feststellen, ob in 2 Dateien ein bestimmtes Wort drin
vorkommt, und falls ja, dann dies, falls nein, dann das machen.
Nimm grep.
Post by Astrid
#!/bin/bash
if [ grep -q WOrt1 ${WM_PROJECT_DIR}/pfad1/datei1.txt && grep -q WOrt1
${WM_PROJECT_DIR}/pfad2/datei2.txt ]; then echo ja
Ach, Du nimmst ja "grep". Aber bitte nicht so!
Post by Astrid
Zeile 2: [: Fehlende `]'
Eigentlich unzutreffend, der Fehler steht gleich ganz am Anfang...
Post by Astrid
Wie kann ich das zum Funktionieren bringen?
Indem Du die Syntax korrigierst und statt dem "[" (aka "/bin/test") und
dessen abschließendem "]" die "grep"-Aufrufe direkt hinschreibst.
Mal in der man page oder anderer Dukumenatation zu shells allgemein könnte
auch etwas helfen.
--
--
(Weitergabe von Adressdaten, Telefonnummern u.ä. ohne Zustimmung
nicht gestattet, ebenso Zusendung von Werbung oder ähnlichem)
-----------------------------------------------------------
Mit freundlichen Grüßen, S. Schicktanz
-----------------------------------------------------------
Astrid
2020-10-14 05:47:47 UTC
Permalink
Ok, alles klar, danke allen.

Gruss, Astrid

Loading...