Hi...
ich hätte gerne eine runvdr.sh, der ich die Plugins und Optionen für vdr über Variablen mittteilen kann.
Das funktioniert soweit auch ganz, bis es an die Plugins geht, deren Befehl "geteilt" ist, sprich ein Leerzeichen beinhaltet.
Bestes Beispiel ist mplayer mit der Option für die mplayer.sh.
Schaut mein Script so aus:
Bash
#!/bin/bash
VDRPRG="/usr/local/bin/vdr"
VDRUSR="-u root"
CONF_DIR="-c /etc/vdr"
EPG_DIR="-E /vdr/epg"
VIDEO_DIR="-v /vdr/video"
PLUGIN_DIR="-L /etc/vdr/plugins"
LOG_LEVEL="-l 3.7"
CONSOLE="-t /dev/tty8"
WATCHDOG_TIME="-w 60"
typeset -a OPTIONS
typeset -a VDRCMD
OPTIONS[1]="-P text2skin"
OPTIONS[2]="-P undelete"
OPTIONS[3]="-P osdteletext -r"
OPTIONS[4]="-P mplayer -M /usr/local/bin/mplayer.sh"
OPTIONS[5]="-P sudoku"
OPTIONS[6]="-r /usr/local/bin/noadcall.sh"
OPTIONS[7]="-s /usr/local/bin/shutdownvdr.sh"
OPTIONS[8]=""
VDRCMD=($VDRPRG $VDRUSR $WATCHDOG_TIME $CONF_DIR $EPG_DIR $VIDEO_DIR $PLUGIN_DIR $LOG_LEVEL $CONSOLE ${OPTIONS[@]})
while true;
do
$VIDEO_DIR $PLUGIN_DIR $LOG_LEVEL $CONSOLE ${OPTIONS[@]}
"${VDRCMD[@]}"
if test $? -eq 0 -o $? -eq 2; then
exit
Alles anzeigen
... dann gibt' folgende Ausgabe:
Code
sh -xx /usr/local/bin/runvdr.sh
+ VDRPRG=/usr/local/bin/vdr
+ VDRUSR='-u root'
+ CONF_DIR='-c /etc/vdr'
+ EPG_DIR='-E /vdr/epg'
+ VIDEO_DIR='-v /vdr/video'
+ PLUGIN_DIR='-L /etc/vdr/plugins'
+ LOG_LEVEL='-l 3.7'
+ CONSOLE='-t /dev/tty8'
+ WATCHDOG_TIME='-w 60'
+ typeset -a OPTIONS
+ typeset -a VDRCMD
+ OPTIONS[1]='-P text2skin'
+ OPTIONS[2]='-P undelete'
+ OPTIONS[3]='-P osdteletext -r'
+ OPTIONS[4]='-P mplayer -M /usr/local/bin/mplayer.sh'
+ OPTIONS[5]='-P sudoku'
+ OPTIONS[6]='-r /usr/local/bin/noadcall.sh'
+ OPTIONS[7]='-s /usr/local/bin/shutdownvdr.sh'
+ OPTIONS[8]=
+ VDRCMD=($VDRPRG $VDRUSR $WATCHDOG_TIME $CONF_DIR $EPG_DIR $VIDEO_DIR $PLUGIN_DIR $LOG_LEVEL $CONSOLE ${OPTIONS[@]})
+ true
+ /usr/local/bin/vdr -u root -w 60 -c /etc/vdr -E /vdr/epg -v /vdr/video -L /etc/vdr/plugins -l 3.7 -t /dev/tty8 -P text2skin -P undelete -P osdteletext -r -P mplayer -M /usr/local/bin/mplayer.sh -P sudoku -r /usr/local/bin/noadcall.sh -s /usr/local/bin/shutdownvdr.sh
/usr/local/bin/vdr: Ungültige Option -- M
+ test 2 -eq 0 -o 2 -eq 2
+ exit
Alles anzeigen
Soweit versteh' ich das ja auch noch...
änder ich das ganze allerdings in die Richtung
dann passiert das hier:
Code
sh -xx /usr/local/bin/runvdr.sh
+ VDRPRG=/usr/local/bin/vdr
+ VDRUSR='-u root'
+ CONF_DIR='-c /etc/vdr'
+ EPG_DIR='-E /vdr/epg'
+ VIDEO_DIR='-v /vdr/video'
+ PLUGIN_DIR='-L /etc/vdr/plugins'
+ LOG_LEVEL='-l 3.7'
+ CONSOLE='-t /dev/tty8'
+ WATCHDOG_TIME='-w 60'
+ typeset -a OPTIONS
+ typeset -a VDRCMD
+ OPTIONS[1]='-P text2skin'
+ OPTIONS[2]='-P undelete'
+ OPTIONS[3]='-P osdteletext -r'
+ OPTIONS[4]='-P '\''mplayer -M /usr/local/bin/mplayer.sh'\'''
+ OPTIONS[5]='-P sudoku'
+ OPTIONS[6]='-r /usr/local/bin/noadcall.sh'
+ OPTIONS[7]='-s /usr/local/bin/shutdownvdr.sh'
+ OPTIONS[8]=
+ VDRCMD=($VDRPRG $VDRUSR $WATCHDOG_TIME $CONF_DIR $EPG_DIR $VIDEO_DIR $PLUGIN_DIR $LOG_LEVEL $CONSOLE ${OPTIONS[@]})
+ true
+ /usr/local/bin/vdr -u root -w 60 -c /etc/vdr -E /vdr/epg -v /vdr/video -L /etc/vdr/plugins -l 3.7 -t /dev/tty8 -P text2skin -P undelete -P osdteletext -r -P ''\''mplayer' -M '/usr/local/bin/mplayer.sh'\''' -P sudoku -r /usr/local/bin/noadcall.sh -s /usr/local/bin/shutdownvdr.sh
/usr/local/bin/vdr: Ungültige Option -- M
+ test 2 -eq 0 -o 2 -eq 2
+ exit
Alles anzeigen
Da steh ich vor nem Rätsel... Wie bring ich das Ding dazu, die Hochkommata einfach zu übernehmen, und den passenden AUfruf zu machen?
Weiss da jemand weiter?
Solemn