Am Freitag, 17. Februar 2006 20:15 schrieb David Haller: Hallo David,
Am Fri, 17 Feb 2006, Al Bogner schrieb:
Am Freitag, 17. Februar 2006 01:25 schrieb David Haller:
Ansonsten hab ich's mal etwas umgeschrieben und angehaengt ;)
Danke. Da passt eine Kleinigkeit nicht beim HD-Platz, das ist aber für das Funktionieren völlig egal, ich habe daher dein Script nicht geändert und rufe deine unveränderte Version auf:
dvd_authoren_dh.sh_\[axMjhb\].sh TEST_TITEL /media_out_nfs/scripttest/
19:24:27 START DVD-AUTORING Quelle /media_out_nfs/scripttest TEST TITEL wird erstellt Auf sind noch mindestens GB frei
Zeig mal die Ausgabe von df -P "$AUTHORINGQUELLE", also hier
df -P /media_out_nfs/scripttest/
df -P /media_out_nfs/scripttest/ Dateisystem 1024-Blöcke Benutzt Verfügbar Kapazit. Eingehängt auf 192.168.1.100:/media_out 133105728 106916608 26189120 81% /media_out_nfs
Evtl. sieht bei deinem df die Ausgabe anders aus, dann musst du das Feld beim awk anpassen. Hier:
Filesystem 1k-blocks Used Available Use% Mounted on /dev/hdb10 34036904 25353064 7992244 76% /mnt/hdb10
d.h. $4 ist "Available".
# uname -r 2.6.13-15.7-default # cat /etc/issue Welcome to SUSE LINUX 10.0 (i586) - Kernel \r (\l). # awk --version GNU Awk 3.1.4 df --version df (GNU coreutils) 5.3.0 # df -P /media_out_nfs/scripttest | awk '/^\//{print $1;}' # df -P /media_out_nfs/scripttest | awk '/^\//{print $2;}' # df -P /media_out_nfs/scripttest | awk '/^\//{print $3;}' # df -P /media_out_nfs/scripttest | awk '/^\//{print $4;}' # df -P /media_out_nfs/scripttest | awk '/^\//{print $5;}' # df -P /media_out_nfs/scripttest | awk '/^\//{print $6;}' Da kommt nichts -P POSIX output format Das sollte doch bewirken, dass die Ausgabe unabhängig von locales ist.
/usr/local/bin/dvd_authoren_dh.sh_[axMjhb].sh: line 39: test: -lt: unary operator expected
Folgefehler. Ergaenze da bitte zu:
test -n "$FREI" || exit 3 echo "Auf sind noch mindestens $FREI GB frei"
Ok, da fliege ich wie zu erwarten raus, da das mit awk nicht funktioniert. Ich kommentiere das mal aus.
if test $FREI -lt 5; then
oder ggfs. mit Fehlermeldung.
+ dvdwizard -c 600 -T ''\''TEST' 'TITEL'\''' -t ''\''film1' 'scripttest'\''' ''\''film1_scripttest.mpg'\''' -t ''\''film2' 'scripttest'\''' ''\''film2_scripttest.mpg'\'''
Mist. Zuviel gequoted. Testhalber mal so:
DVDWIZARDOPTION="$DVDWIZARDOPTION -t \"$FILMTITEL\" \"`basename $FILM`\""
/usr/local/bin/dvd_authoren_dh.sh_[axMjhb].sh: line 42: test: -lt: unary operator expected + dvdwizard -c 600 -T ''\''TEST' 'TITEL'\''' -t '"film1' 'scripttest"' '"film1_scripttest.mpg"' -t '"film2' 'scripttest"' '"film2_scripttest.mpg"' Specified input file TITEL' not found. Aborting
Ansonsten kann man sich bei der bash auch mit einem Array helfen, in das man die Argumente einzeln hineinstopft:
David, das soll ein 13-jähriges Mädchen verstehen. Ich bin schon sehr froh darüber, dass sie das ursprüngliche Script mit etwas Hilfe geschafft hat. Man darf auch nicht vergessen, dass sie das Script nicht aus Freude am Scripten schrieb, sondern weil sie sich damit das Erstellen einer DVD erleichtern will. Auf die Array-Variante möchte ich erst dann zurück kommen, wenn es anders nicht klappt. Es ist mir wichtig, dass sie versteht, was da passiert, sonst wird sie bei nächster Gelegenheit nicht motiviert sein, da selber was zu schreiben. Es ist ihr 2. Shellscript. Al