Ich hab mir ein kleinen Skript geschrieben, worin ich eine Folge eines Podcasts runterladen und gleich in oga konvertieren möchte.
Das Skript soll möglichst einfach und komfortabel zugleich sein...
Code: Alles auswählen
#!/bin/bash
URL="http://traffic.libsyn.com/fitnessmitmark/"
help () {
cat <<EOF
USAGE: $0 [0-9][0-9][0-9]
Lädt eine Folge des Podcasts "Fitness mit Mark" von ''${URL}'' unter Angabe der Nummer der Folge (3-stellig mit führenden Nullen - z.B. 002) herunter.
EOF
}
set -- $(getopt -o h -- "$@")
while test $# -gt 0; do
echo TEST: "$1"
case $1 in
-h)
help
exit 0
;;
[0-9]*)
echo wget ${URL/}fmm$(printf '%03g' $1).mp3
shift
;;
--)
shift
continue
;;
*)
help
exit 1
;;
esac
done
Wenn nicht vorgesehene Optionen angegeben werden, wird die Hilfe ausgegeben und das Skript beendet sich mit Exitstatus 1 (nicht erfolgreich beendet)
getopt reiht alle Parameter die nicht in getopt definiert werden (und nicht mit "-" beginnen) hinter "--", daher auch in der Schleife die Abfrage nach --).
Wenn nun die restlichen Paramter nach -- Zahlen sind, soll der Download gemacht werden, indem die Zahl auf 3 Stellen vorne mit 0 aufgefüllt wird.
Das Problem dabei ist, dass nach getopt die Zahlen offenbar strings werden
Hier die Ausgabe mit dem Debug-String "Test", der jede einzlne Option ausgibt.
Code: Alles auswählen
$ ./download-podcast.sh 10 123
TEST: --
TEST: '10'
USAGE: ./download-podcast.sh [0-9][0-9][0-9]
Aber eine Umwandlung in Integer mit dem Bashismus $(($1 + 0)) führt ebenfalls zu einer Fehlermeldung:
Im Skript die Debugzeile durch das ersetzt
Code: Alles auswählen
echo TEST: "$1 - $(($1 + 0))"
Code: Alles auswählen
$ ./download-podcast.sh 10
TEST: -- - 0
./download-podcast.sh: Zeile 19: '10' + 0: Syntax Fehler: Operator erwartet. (Fehlerverursachendes Zeichen ist \"'10' + 0\").
lg scientific