xterm mit mehreren Kommandos aufrufen
xterm mit mehreren Kommandos aufrufen
Hallo, ich versuche gerade eine "Messagebox" unter X zu realisieren. Dazu möchte ich ein xterm aufmachen, indem eine Meldung präsentiert wird und auf einen Tastendruck gewartet wird. Das ganze aus einem Skript heraus.
Das Problem ist, das ich ja zwei Befehle brauche (ein extra Skript mit den zwei Befehlen kommt nicht in Frage). Nur haut das alles nicht hin
xterm -e { echo "Hallo Welt"; read NOTHING; } gibt einen Fehler:
bash: syntax error near unexpected token `}'
Ohne die "{}" bekommw ich die Meldung, aber das "read" wird logischer Weise wieder in der aufrufenden Shell ausgeführt und nicht im aufgerufenen xterm.
xterm -e "echo 'Hallo Welt'; read NOTHING"
erzeugt einen Fehler im aufgerufenen xterm:
xterm: Can't execvp echo 'Hallo Welt'; read NOTHING: No such file or directory
Leuchtet auch ein. Irgendwo.
Wo ist denn nun der Haken ? Wäre auch mit Shell kompatiblen Alternativen zufrieden. Nur halt kein gtk/qt/fltk/xfroms/xaw,etc.pp
xlib würde vermultich den Rahmen sprengen, wenn überhaupt per sh ansprechbar.
Das Problem ist, das ich ja zwei Befehle brauche (ein extra Skript mit den zwei Befehlen kommt nicht in Frage). Nur haut das alles nicht hin
xterm -e { echo "Hallo Welt"; read NOTHING; } gibt einen Fehler:
bash: syntax error near unexpected token `}'
Ohne die "{}" bekommw ich die Meldung, aber das "read" wird logischer Weise wieder in der aufrufenden Shell ausgeführt und nicht im aufgerufenen xterm.
xterm -e "echo 'Hallo Welt'; read NOTHING"
erzeugt einen Fehler im aufgerufenen xterm:
xterm: Can't execvp echo 'Hallo Welt'; read NOTHING: No such file or directory
Leuchtet auch ein. Irgendwo.
Wo ist denn nun der Haken ? Wäre auch mit Shell kompatiblen Alternativen zufrieden. Nur halt kein gtk/qt/fltk/xfroms/xaw,etc.pp
xlib würde vermultich den Rahmen sprengen, wenn überhaupt per sh ansprechbar.
Re: xterm mit mehreren Kommandos aufrufen
Hallo,
schau dir mal xdialog an (www.freshmeat.net oder so) ist genial für einfache grafische
Oberflächen. Ich verwende das Teil zusammen mit REXX (komme halt aus der Mainfraime-Welt),
sollte aber auch mit bash und co funktionieren.
Gruß Klaus
schau dir mal xdialog an (www.freshmeat.net oder so) ist genial für einfache grafische
Oberflächen. Ich verwende das Teil zusammen mit REXX (komme halt aus der Mainfraime-Welt),
sollte aber auch mit bash und co funktionieren.
Gruß Klaus
Re: xterm mit mehreren Kommandos aufrufen
gna, lesen sollte ich koennen *loesch*
Last edited by spark on 19. Aug 2002 6:33, edited 2 times in total.
Re: xterm mit mehreren Kommandos aufrufen
Was spricht denn gegen ein kleines Extrascript? Vielleicht laesst sich _das_ Problem dann ja leichter loesen?
Re: xterm mit mehreren Kommandos aufrufen
Ich denke nicht, dass xterm da mitspielt. Das Problem liegt darin, dass xterm keine Shell ist. Es ruft lediglich per Default eine Shell auf; xterm stellt die Infrastruktur zur Verfügung, dass die Shell problemfrei mit X interagieren kann (Fenster usw.). Wenn Du nun xterm mittels -e "cmd" etwas zum Ausführen mitgibst, wird eben keine Shell gestartet. Die brauchst Du aber, damit das Semikolon die Kommandos trennt oder die die geschweiften Klammern die Kommandos gruppieren. Das ist alles Shellfunktionalität. In Deinem Beispiel versuchst Du eben ein Kommando auszuführen, das "echo 'Hallo Welt'; read NOTHING" <i>heisst</i> - und das gibt es nun mal nicht.
Sorry, unter Deinen Vorgaben habe ich so rein gar keine Alternative... <img src="http://www.pl-forum.de/UltraBoard/Images/Sad.gif" border="0" align="middle"> Aber wenigstens weisst Du jetzt, dass es sich nicht lohnt, in diesen Weg noch weiter Arbeit reinzustecken. <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">
Jochen
Sorry, unter Deinen Vorgaben habe ich so rein gar keine Alternative... <img src="http://www.pl-forum.de/UltraBoard/Images/Sad.gif" border="0" align="middle"> Aber wenigstens weisst Du jetzt, dass es sich nicht lohnt, in diesen Weg noch weiter Arbeit reinzustecken. <img src="http://www.pl-forum.de/UltraBoard/Images/Wilk.gif" border="0" align="middle">
Jochen
Re: xterm mit mehreren Kommandos aufrufen
Kann man der Shell nicht Commandos übergeben ? So in der Art xterm -e /bin/sh "Kommandos" ? Wäre ncurses eine Lösung ? Jemand ne Einführung parat (noch nicht gegoogelt).
@spark: Es soll ein simples Skript werden, das cds einbindet oder aushängt und Statusmeldungen entweder auf der Konsole oder X (jenachdem, von wo aufgerufen) schreibt. Konsole ist ja auch recht einfach ...
Aber für jede Meldung eine extra Datei, das wären momentan drei an der Zahl für so eine eher kleine Aufgabe. Uneleganter geht es nicht, da weigert sich was in mir.
Es muß doch möglich sein, mit Standardwerkzeugen (deshalb auch kein xdialog) eine Dialogbox in X hinzubekommen ?!
As usual, trotzdem Danke für eure Anteilnahme
@spark: Es soll ein simples Skript werden, das cds einbindet oder aushängt und Statusmeldungen entweder auf der Konsole oder X (jenachdem, von wo aufgerufen) schreibt. Konsole ist ja auch recht einfach ...
Aber für jede Meldung eine extra Datei, das wären momentan drei an der Zahl für so eine eher kleine Aufgabe. Uneleganter geht es nicht, da weigert sich was in mir.
Es muß doch möglich sein, mit Standardwerkzeugen (deshalb auch kein xdialog) eine Dialogbox in X hinzubekommen ?!
As usual, trotzdem Danke für eure Anteilnahme
Re: xterm mit mehreren Kommandos aufrufen
Im Prinzip schon: <pre>bash -c "echo hallo ; read junk"</pre>Von einer Shell aus aufgerufen tut's das auch problemfrei. Aber sobald Du das ganze mit xterm koppeln willst, also <pre>xterm -e 'bash -c "echo hallo ; read junk"'</pre>tritt wieder das Problem auf, dass xterm das gesamte Optionsargument zu -e als den Namen eines Kommandos betrachtet. Die Whitespaces werden also nicht als Trennzeichen beachtet; xterm ist eben keine Shell.
Sorry,
Jochen
Sorry,
Jochen
Re: xterm mit mehreren Kommandos aufrufen
Hallo rossi, dann haette ich meine Loesung ja doch nicht loschen muessen. *grmpf*
Mach doch ein Script mit Uebergabeparameter:
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
[~] cat /usr/local/bin/msgbox
#!/bin/sh
echo "$1"
read NOTHING
</font><hr></pre></blockquote>
Das rufst du dann so auf:
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
[~] cat /usr/local/bin/msgbox
#!/bin/sh
echo "$1"
read NOTHING
</font><hr></pre></blockquote>
Funktioniert bei mir tadellos.
- Spark
Mach doch ein Script mit Uebergabeparameter:
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
[~] cat /usr/local/bin/msgbox
#!/bin/sh
echo "$1"
read NOTHING
</font><hr></pre></blockquote>
Das rufst du dann so auf:
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
[~] cat /usr/local/bin/msgbox
#!/bin/sh
echo "$1"
read NOTHING
</font><hr></pre></blockquote>
Funktioniert bei mir tadellos.
- Spark
Last edited by spark on 20. Aug 2002 12:07, edited 1 time in total.
Re: xterm mit mehreren Kommandos aufrufen
?
Das Forum hat wohl einen Bug... Egal was ich versuche, im zweiten Codeblock steht immer das was auch im ersten schon steht. =) Das zweite soll natuerlich heissen:
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
[~] xterm -e msgbox "Hallo Welt"
</font><hr></pre></blockquote>
Mal testen:
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
[~] xterm -e msgbox "Hallo Welt"
</font><hr></pre></blockquote>
Das Forum hat wohl einen Bug... Egal was ich versuche, im zweiten Codeblock steht immer das was auch im ersten schon steht. =) Das zweite soll natuerlich heissen:
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
[~] xterm -e msgbox "Hallo Welt"
</font><hr></pre></blockquote>
Mal testen:
<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">
[~] xterm -e msgbox "Hallo Welt"
</font><hr></pre></blockquote>
Re: xterm mit mehreren Kommandos aufrufen
@Spark: Ja, der Bug ist alt und bekannt.
Nun ja, ein nicht allzu schöner Work-Around - aber es ist wenigstens einer. Ich hatte gar nicht überrissen, dass weitere Argumente dem -e-Kommando zugeschlagen werden. Manual pages müsste man lesen können... Also ist es jetzt ganz einfach:<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">xterm -e /bin/bash -c '{echo Hallo ; read JUNK ; }'</font><hr></pre></blockquote>Funktioniert genau so bei mir.
Jochen
Nun ja, ein nicht allzu schöner Work-Around - aber es ist wenigstens einer. Ich hatte gar nicht überrissen, dass weitere Argumente dem -e-Kommando zugeschlagen werden. Manual pages müsste man lesen können... Also ist es jetzt ganz einfach:<blockquote><pre><font size="1" face="">code:</font><hr><font face="Courier New" size="2">xterm -e /bin/bash -c '{echo Hallo ; read JUNK ; }'</font><hr></pre></blockquote>Funktioniert genau so bei mir.
Jochen
Re: xterm mit mehreren Kommandos aufrufen
Merkwuerdig, deine Loesung funktioniert bei mir nicht. Das xterm oeffnet sich und schliesst sich dann gleich wieder.