Singlequote Werte in Variable als Paramerter auswerten

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
thomas2496
Beiträge: 20
Registriert: 01.05.2004 12:16:56

Singlequote Werte in Variable als Paramerter auswerten

Beitrag von thomas2496 » 08.08.2006 21:33:17

Edit: Thema gelöst, siehe unten.
Edit: Titel angepasst.

______________________________________________________

Hallo.

Ich habe ein seltsames Problem bei dem ich nicht weiterkomme.
Folgendes:
Ich möchte vdr starten und dabei Plugins übergeben. Plugins werden in der Form -P 'Parameterlist mit Leerzeichen' (-P beliebig oft) übergeben.

Mein VDR ist selbst kompiliert, die die Parameter der Plugins speichere ich in der datei plugins.conf nach dem Format:

Code: Alles auswählen

mp3 -m $VDRBASE/plugins/mp3/mount.sh -n $VDRBASE/plugins/mp3/network.sh
dvd -C/media/dvd
osdteletext --directory=$VDRBASE/cache/osdteletext.cache --max-cache=20M
Das folgende Script soll nun ein String zusammen bauen welcher die Plugins (mit Singlequotes) listet:

Code: Alles auswählen

PLUGINS=`cat $VDRBASE/plugins.conf | sed "s/^/-P \'/" | sed "s/$/\'/"`
PLUGINS=`echo "$PLUGINS" | sed "s!\\$VDRBASE!$VDRBASE!g"` # kleiner Trick
PLUGINS="./test2.sh $PLUGINS"
$PLUGINS
./test2.sh ist hierbei ein Script welches alle Parameter ($*) und die ersten 8 ausgibt.

So sieht es aus wenn ich es durch obige 4 Zeilen starten lasse:
FULL=-P 'mp3 -m /usr/local/vdr/plugins/mp3/mount.sh -n /usr/local/vdr/plugins/mp3/network.sh -S mp3 -B /var/lib/cddb' -P 'dvd -C/media/dvd' -P 'osdteletext --directory=/usr/local/vdr/cache/osdteletext.cache --max-cache=20M' -P 'xine -r' -P'newsticker' -P 'games'
1st=-P
2nd='mp3
3rd=-m
4th=/usr/local/vdr/plugins/mp3/mount.sh
5th=-n
6th=/usr/local/vdr/plugins/mp3/network.sh
7th=-S
8th=mp3
So war das nicht gedacht - er separiert die Parameter und beachtet in dem Fall die spezielle Bedeutung des Singleqoute nicht.

Wenn ich $PLUGINS nicht ausführe, sondern mit echo ausgebe, sieht alles aus wie es soll.

Ich weiß dass das ein triviales Problem ist. Mit der Kette der Kommando-Zerlegung (Rangfolge) habe ich mich auseinandergesetzt und noch ein wenig probiert, bekomme es aber nicht hin.

Weiß jemand Rat?

Grüße,

Thomas.
Zuletzt geändert von thomas2496 am 10.08.2006 20:15:28, insgesamt 1-mal geändert.

roli
Beiträge: 3174
Registriert: 10.09.2003 17:39:58

Re: Script aufrufen: Singleqoute übergeben (Variablen aufbau

Beitrag von roli » 09.08.2006 09:29:32

Hi,
thomas2496 hat geschrieben:Plugins werden in der Form -P 'Parameterlist mit Leerzeichen' (-P beliebig oft) übergeben.
schon mal probiert die Hochkomma im Script jeweils mit einem \ zu quotieren?
Roland


"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"

thomas2496
Beiträge: 20
Registriert: 01.05.2004 12:16:56

Beitrag von thomas2496 » 10.08.2006 13:03:35

Hallo roli,

ja habe ich. Ich weiß echt nicht mehr weiter wie man das übergeben kann so dass die Gruppierungs-Bedeutung vom Singleqoute weiterhin funktioniert.

Code: Alles auswählen

PLUGINS="-P 'mp3 -x 1 -y 2 -v /tmp' -P 'dvd -C/media/dvd' -P 'osdteletext -xyz'"
PLUGIN="./test2.sh $PLUGINS"
$PLUGIN
Funktioniert mit keiner Kombination von Double-/Singelqoute und maskieren.


Hinweis noch: Ich benutze die Bash v2.05.

Grüße,

Thomas.

PS: Bin für Vorschäge offen für einen besseren Themen-Titel. ;)

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 10.08.2006 16:30:13

probiers einmal so:

Code: Alles auswählen

PLUGINS="-P 'mp3 -x 1 -y 2 -v /tmp' -P 'dvd -C/media/dvd' -P 'osdteletext -xyz'"
PLUGIN="./test2.sh $PLUGINS"
eval $PLUGIN
Gruß
gms

thomas2496
Beiträge: 20
Registriert: 01.05.2004 12:16:56

Beitrag von thomas2496 » 10.08.2006 20:09:49

Danke gms,

so funktioniert es. :D

Wusste das es irgendeine Möglichkeit gibt, hab blos in existierenden Codes nicht sowas gefunden.

Dankeschön. Gelöst.

Werde den Titel anpassen.


Grüße, Thomas.

Such-Stichwörter: auswerten parsen eval quote singelquote

Antworten