Ich habe eine Textdatei mit bestimmten Installationsanweisungen und weiß, dass ich nach einem eindeutigen Vorkommen in der Datei suchen kann. Die Textdatei enthält beispielsweise Folgendes:
MYDIR = `find / home / user -name somedir` export PERL5LIB = $ PERL5LIB: $ MYDIR
Wie kann ich in bash die Zeilen nach einem grep in der Datei ausführen? Etwas wie:
Ergebnis von "grep somedir INSTALLFILE" ausführen Ergebnis von "grep 'export PERL5LIB' INSTALLFILE" ausführen
Antworten:
Annahmen:
Sie können Ihre Befehle in eine temporäre Datei umleiten und Folgendes ausführen:
Oder Sie könnten die Ergebnisse auswerten
Aktualisieren einer alten Antwort. Was ich heute tun würde, ist eine Prozessersetzung:
quelle
source <(...)
Bash 4 oder höher benötigen. Es funktionierte nicht mit älteren Versionen (zsh war allerdings in Ordnung).So bewerten Sie die Zeilen in einem separaten Shell-Prozess:
So bewerten Sie die Zeilen im laufenden Shell-Prozess:
quelle
-A 1
oder-B 1
als Flags auf dem einen oder anderen Ihrergrep
s beide Zeilen mit einem Grep abrufen und diese in einer der @ Gilles-Lösungen verwenden.sh
möglicherweise ein Symlink zu einer anderen Shell anstelle der erwarteten vorhanden ist, sodass die Ergebnisse möglicherweise nicht vorhersehbar sind. Um sicher zu gehen, geben Sie genau die Shell an, die Sie erwarten, z. B.grep somedir INSTALLFILE | bash
Haben Sie darüber nachgedacht, die 'exec'-Funktion von find wie folgt zu verwenden:
quelle