ubuntuusers.de

Shellscript soll sich selbst in z.B. Xterm ausführen

Status: Gelöst | Ubuntu-Version: Ubuntu
Antworten |

xapient

Avatar von xapient

Anmeldungsdatum:
30. September 2006

Beiträge: 559

Oke .. die Überschrift ist vielleicht etwas verwirrend..... worum gehts?

Ich suche nach einer möglichkeit shellscripte vom desktop aus zu starten.. direkt! nicht über eine verknüpfung und "ausführen in terminal"

xterm -e befehl kann soetwas.. ich habe auch schon wild und ahnungslos experimentert
xterm -e {befehl ifschleife case usw exit} klar das das nicht ging.. (muss ja nicht xterm sein.. konsole oder sonst was)

konkret suche ich also nach einer zeile die ich direkt in das script (zu beginn) einfügen kann, sodass es weiss, dass es einen virtuellen terminal am laufenden X öffnen soll und darin auf meine eingaben zu warten hat.

(oder so ähnlich)

danke!

pepre Team-Icon

Supporter
Avatar von pepre

Anmeldungsdatum:
31. Oktober 2005

Beiträge: 6474

Wohnort: Erlangen

Was ist an "xterm -e befehl/script" falsch, bzw was funktioniert damit nicht? Du musst das Problem schon genauer umreissen.

SvKr

Avatar von SvKr

Anmeldungsdatum:
7. Dezember 2006

Beiträge: 718

Auf die schnell fällt mir nur read ein...

read x


Wartet auf eine Eingabe + <Enter>
Die Eingabe wird in der Variablen x gespeichert.

Vielleicht hilft dir das schon.

bis dann...

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17625

Wohnort: Berlin

xapient hat geschrieben:

konkret suche ich also nach einer zeile die ich direkt in das script (zu beginn) einfügen kann, sodass es weiss, dass es einen virtuellen terminal am laufenden X öffnen soll und darin auf meine eingaben zu warten hat.

Das ist selbstwidersprüchlich.
Entweder Du führst ein Script aus, oder Du gibst Kommandos interaktiv ein.

Willst Du nur Kommandos interaktiv eingeben, so startest Du das entsprechende xterminal.
Woher weiß aber das xterminal, daß es starten soll? Weil /usr/bin/xfterm4 im Dateibrowser geklickt wurde, oder weil es einem Hotkey zugeordnet wurde, oder weil es irgendwo eine Verknüpfung gibt, oder weil Du in einem anderen Terminal xfterm4 aufrust..

Oder Du führst ein existierendes Script aus.
Dann kannst Du wohl mit read userinput lesen, und diesen wiederum an ein Terminal übergeben, zur Ausführung, und dann den Rest des Scripts ausführen.

Mir erschließt sich der Sinn nicht.

xapient

(Themenstarter)
Avatar von xapient

Anmeldungsdatum:
30. September 2006

Beiträge: 559

heya.. danke für die antworten..

oke.. ich seh das meine beschreibung sehr verwirrend ist.. zunächst.. es geht nicht um die eingabe meinerseits.. einfach nur darum ein skript auszuführen.. (im laufe des skripts wird dann halt mal eine eingabe verlangt.. (read ist mir bekannt.. hier gehts um eine passwort eingabe ))

xterm - e befehl sollte nur als beispiel gelten.. dies kann ich durchaus in ein skript einbauen und der entsprechende befehl wird bei "doppelklick" des skripts in einem terminalfenster ausgeführt.. nur sollte dann eben nicht nur ein befehl sondern das ganze nachstehende skript in diesem terminalfenster ausgeführt werden.. )

das ist der punkt.. ich möchte eben nicht extra einen terminal öffnen müssen um das skript zu starten.. ich möchte es über die grafische oberfläche per mausklick starten können.. dann wird das skript abgearbeitet und an erster stelle soll etwas stehen, dass dieses abarbeiten (so gestartet) ermöglicht..mir dieses abarbeiten sichtbar macht .. und benötigte eingaben ermöglicht.. eben ein terminalfenster.. ich hab grad keine andere idee.. (es gibt die möglichkeit einen link anzulegen zu dem skript und festzulegen dass dieses in einem terminalfenster ausgeführt wird.. nur leider is das wieder über umwege was mir eben nicht so gefällt und obendrein läuft das bei mir mit skripten die einen zusätzlichen parameter "start" "restart" etc. benötigen einfach nicht!)

ich will es nochmal veranschaulichen.. eine ausführbare datei mit folgendem inhalt:

#!/bin/bash
exec xterm -e /home/user/test

würde beim start (vom KDE aus) das skript namens test in einem xterm ausführen... (das funktioniert einwandfrei, wäre aber das gleiche wie ein link.. also wieder über umweg)

was ich gerne hätte wäre etwas in der art..

#!/bin/bash
exec xterm -e {
tootal langes skript mit textausgabe
und dateneingabe.. einigen shellbefehlen wir mkdir
und cryptsetup luksOpen etc. usw. usf.
}

oder eben eine andersartige lösung für diesen wunsch..

danke danke und danke für jede idee..

so.. vielleicht ist das komplett unlogisch und undurchführbar.. ich weiss ja nicht.. (in der beziehung total grün hinter den ohren) dann bin ich auch für diesen hinweis dankbar..
hab mir sogar schon überlegt mich in kdevelop einzuarbeiten und das ganze in C zu machen mit kleinem UI.. aber das ist mir jetzt doch etwas zu blöd..

pepre Team-Icon

Supporter
Avatar von pepre

Anmeldungsdatum:
31. Oktober 2005

Beiträge: 6474

Wohnort: Erlangen

Vllt mit einer Funktion, sofern die exportiert wird:

#!/bin/bash

foo()
{
tootal langes skript mit textausgabe
und dateneingabe.. einigen shellbefehlen wir mkdir
und cryptsetup luksOpen etc. usw. usf.
}

exec xterm -e foo

xapient

(Themenstarter)
Avatar von xapient

Anmeldungsdatum:
30. September 2006

Beiträge: 559

nette idee.. leider funtioniert sie nicht.. auch nicht in 243 verschiedenen abwandlungen die ich probiert habe (shice wenn man hier trial&error anwenden muss da einem google nix verrät)

ich habe aber.. *schmeissmichwegroflmao usw.* eine kreative lösung entwickelt..

#!/bin/bash

touch testfile

echo "
tootal langes skript mit textausgabe
und dateneingabe.. einigen shellbefehlen wir mkdir
und cryptsetup luksOpen etc. usw. usf. 
" > testfile

xterm -e testfile
rm testfile

funktioniert! etwas seltsamer lösungsweg zwar.. (und ich hoffe doch auf eine weniger kreative aber umso funktionalere möglichkeit... unter "echo" müssen nämlich alle sonderzeichen auch als solche definiert werden mit \ .. ) .. aber des tuts fürs erste..

so long..

pepre Team-Icon

Supporter
Avatar von pepre

Anmeldungsdatum:
31. Oktober 2005

Beiträge: 6474

Wohnort: Erlangen

Funktioniert und ist eleganter:

#!/bin/bash

foo()
{
echo "blabla"
read TMP
}

export -f foo

xterm -e foo

xapient

(Themenstarter)
Avatar von xapient

Anmeldungsdatum:
30. September 2006

Beiträge: 559

perfekt.. wunderschön.. 😀 😀 😀 😀
export -f also für funktionen scheints?!


Vielen Dank!!

lg xapient

Antworten |