Re: xterm -e mit Eingabeumleitung

From: Oliver Fromme <olli(at)secnetix.de>
Date: Sun, 9 Dec 2001 21:40:01 +0100 (CET)

Marc Santhoff <M.Santhoff(at)t-online.de> wrote:
> Joerg Wunsch wrote:
> > As Marc Santhoff wrote:
> > > xterm -e "/usr/local/bin/mysql -h vogon -p < /pfad/zum/SQL-Skript.sql"
> >
> > Ist doch ziemlich klar: -e versucht, den ganzen String danach (infolge
> > des Quotings) als Dateinamen zu interpretieren. Du darfst ihn also
> > nicht quoten. Um das < vor Interpretation durch die aufrufende Shell
> > zu schützen, mußt Du dieses quoten (single oder double quotes oder
> > einen backslash davor).
> >
>
> Klingt logisch, führt aber nicht zum Ziel.

Das Problem ist, daß xterm keinen system() call macht (dann
wär's egal, denn dann könnte man das ganze Kommando auch
als einen komplett gequoteten String übergeben), sondern
ein exec*(). Das bedeutet, daß das Umleitungszeichen "<"
nie von einer Shell zu Gesicht bekommen wird, und das
mysql-Kommando kann damit natürlich nichts anfangen.

Lösung wäre (Vorsicht, lange Zeile ohne Umbruch):

xterm -e /bin/sh -c "/usr/local/bin/mysql -h vogon -p < /pfad/zum/SQL-Skript.sql"

Auf diese Weise läuft sozusagen »zwischen« dem xterm und
dem mysql noch eine Shell, die das Umleitungszeichen in-
terpretiert und das Gewünschte tut.

> Jetzt sitzt der Befehl wie für die Konsole in einem Shellskript
> und alles läuft wie es soll.

Das geht natürlich auch.

Gruß
   Olli

-- 
Oliver Fromme, secnetix GmbH & Co KG, Oettingenstr. 2, 80538 München
Any opinions expressed in this message may be personal to the author
and may not necessarily reflect the opinions of secnetix in any way.
"All that we see or seem is just a dream within a dream" (E. A. Poe)
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Sun 09 Dec 2001 - 21:40:01 CET

search this site