Ich habe eine Datei, die Verzeichnisnamen enthält:
my_list.txt
:
/tmp
/var/tmp
Ich möchte in der Bash prüfen, bevor ich einen Verzeichnisnamen hinzufüge, ob dieser Name bereits in der Datei existiert.
Ich habe eine Datei, die Verzeichnisnamen enthält:
my_list.txt
:
/tmp
/var/tmp
Ich möchte in der Bash prüfen, bevor ich einen Verzeichnisnamen hinzufüge, ob dieser Name bereits in der Datei existiert.
Hier ist ein schneller Weg, um eine Zeichenkette oder Teilzeichenkette zu suchen und auszuwerten:
if grep -R "my-search-string" /my/file.ext
then
# string exists
else
# string not found
fi
Sie können auch zuerst testen, ob der Befehl Ergebnisse liefert, indem Sie ihn nur ausführen:
grep -R "my-search-string" /my/file.ext
Wenn ich Ihre Frage richtig verstanden habe, sollte dies Ihren Anforderungen genügen.
In einer Zeile : check="/tmp/newdirectory"; [[ -n $(grep "^$check\$" my_list.txt) ]] && echo "dir already listed" || echo "$check" >> my_list.txt
Die Lösung von @Thomas hat bei mir aus irgendeinem Grund nicht funktioniert, aber ich hatte eine längere Zeichenkette mit Sonderzeichen und Leerzeichen, also habe ich die Parameter einfach wie folgt geändert:
if grep -Fxq 'string you want to find' "/path/to/file"; then
echo "Found"
else
echo "Not found"
fi
Hoffentlich hilft es jemandem
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.