xterm mit mehreren Kommandos aufrufen

Post Reply
Message
Author
rossi

xterm mit mehreren Kommandos aufrufen

#1 Post by rossi »

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.

klaus Schäfer

Re: xterm mit mehreren Kommandos aufrufen

#2 Post by klaus Schäfer »

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

spark
Posts: 272
Joined: 08. Jul 2000 9:00
Location: Solingen, NRW
Contact:

Re: xterm mit mehreren Kommandos aufrufen

#3 Post by spark »

gna, lesen sollte ich koennen *loesch* ;)
Last edited by spark on 19. Aug 2002 6:33, edited 2 times in total.

spark
Posts: 272
Joined: 08. Jul 2000 9:00
Location: Solingen, NRW
Contact:

Re: xterm mit mehreren Kommandos aufrufen

#4 Post by spark »

Was spricht denn gegen ein kleines Extrascript? Vielleicht laesst sich _das_ Problem dann ja leichter loesen?

Jochen

Re: xterm mit mehreren Kommandos aufrufen

#5 Post by Jochen »

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

rossi

Re: xterm mit mehreren Kommandos aufrufen

#6 Post by rossi »

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 :)

Jochen

Re: xterm mit mehreren Kommandos aufrufen

#7 Post by Jochen »

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

spark
Posts: 272
Joined: 08. Jul 2000 9:00
Location: Solingen, NRW
Contact:

Re: xterm mit mehreren Kommandos aufrufen

#8 Post by spark »

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
Last edited by spark on 20. Aug 2002 12:07, edited 1 time in total.

spark
Posts: 272
Joined: 08. Jul 2000 9:00
Location: Solingen, NRW
Contact:

Re: xterm mit mehreren Kommandos aufrufen

#9 Post by spark »

?
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>

Jochen

Re: xterm mit mehreren Kommandos aufrufen

#10 Post by Jochen »

@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

spark
Posts: 272
Joined: 08. Jul 2000 9:00
Location: Solingen, NRW
Contact:

Re: xterm mit mehreren Kommandos aufrufen

#11 Post by spark »

Merkwuerdig, deine Loesung funktioniert bei mir nicht. Das xterm oeffnet sich und schliesst sich dann gleich wieder.

Post Reply