Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
inne
- Beiträge: 3289
- Registriert: 29.06.2013 17:32:10
- Lizenz eigener Beiträge: GNU General Public License
-
Kontaktdaten:
Beitrag
von inne » 14.07.2018 22:45:54
Wo ist das Bashism und wie kann es beseitgt werden:
Code: Alles auswählen
$ sh -c "echo c | grep -E -f - <(echo abc)"
sh: 1: Syntax error: "(" unexpected
PS: Es soll bitte ein Einzeiler nach diesem Muster bleiben, denn das echo c ist nur hier im Beispiel so und eigentlich ein here-doc.
-
Meillo
- Moderator
- Beiträge: 9227
- Registriert: 21.06.2005 14:55:06
- Wohnort: Balmora
-
Kontaktdaten:
Beitrag
von Meillo » 14.07.2018 22:52:02
Der Bashism ist ``<(...)''.
Beschreibe was genau du tun willst. Und liefere bitte realitaetsnahe Werte fuer die beiden Strings/Dateien. Auf so einem abstrakten Level finde ich es schwer eine passende Loesung zu konstruieren.
Use ed once in a while!
-
inne
- Beiträge: 3289
- Registriert: 29.06.2013 17:32:10
- Lizenz eigener Beiträge: GNU General Public License
-
Kontaktdaten:
Beitrag
von inne » 14.07.2018 23:02:39
Was du tun kannst ist:
Das koennte bei langen RegExps allerdings etwas unleserlich werden.
Man hat halt nur ein Stdin, folglich musst du einen der beiden Strings entweder direkt als Argument uebergeben (wie hier die Regexps) oder in eine temporaere Datei schreiben (wie <(...) das macht, bloss bekommst du davon nichts mit ... aber lies dir die Funktionsweise in der Manpage der Bash durch, da steht genau was passiert).
-
inne
- Beiträge: 3289
- Registriert: 29.06.2013 17:32:10
- Lizenz eigener Beiträge: GNU General Public License
-
Kontaktdaten:
Beitrag
von inne » 15.07.2018 01:40:07
Nun-Ja das ist wohl die Lösung und eben weil die RegExps etwas Umfangreicher sind, habe ich die wohl nicht genommen..
Ist das als BASH-Skript wenigstens "sauber" und wie nennt man das Konstrukt <(...) nochmal, so das ich es in der doch sehr umfangreichen Manpage auch finde?
-
rendegast
- Beiträge: 15041
- Registriert: 27.02.2006 16:50:33
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von rendegast » 15.07.2018 07:43:31
"Process Substitution"
Du kannst auch in 'man bash' nach dem String
[<][(]
suchen (mit Pager 'less' per '/')('update-alternatives --config pager').
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")