Re: OT: Bash-Scripting
Moin,
Vincent schriebst am 01. Dez um 10:33 Uhr:
> Guten Morgen,
> Der Dateiname ist immer DATEI001.PDF - DATEI099.PDF
>
> #!/bin/bash
> # regex einlesen
> # Meine Eingabe für Seite 8-11: 0[8-9]|1[0-1]
> read -p "Seiten (regex): " seite
> # Befehl anzeigen
> echo "pdftk /pfad/zur/pdf/DATEI0+($seite).PDF cat output full.pdf
1. hier fehlen die quotes am Ende
2. bash hat keine regex, nur pattern matching mit extglob, siehe man bash.
3. du meinst: DATEI0@(0[8-9]|1[0-1])
4. shell globbing sortiert nicht alphabetisch, die Seiten können also
durcheinander geraten
> # ausführen
> pdftk /pfad/zur/pdf/DATEI0+($seite).PDF cat output full.pdf
>
> nun bekomme ich den Befehl auf der Konsole ausgegeben (echo), kann
> Copy+Paste machen und alles läuft,
hier wäre die Ausgabe des echo-Befehls zur Illustration deines Problems
nett gewesen.
> aber der Befehl aus dem Script scheitert:
> Syntaxfehler beim unerwarteten Wort `('
>
> Vielleicht kann mir das kurz jemand erklären.
extglob ist in Scripten standardmäßig abgeschaltet. Dann greift tenyards
Erklärung.
~$ cat ./mtest.sh
#!/bin/bash
shopt -s extglob
seite='0[8-9]|1[0-1]' ; pdftk ~/DATEI0@($seite).PDF cat output full.pdf
> Vielen Dank und Beste Grüße
> Vincent
Gruß
Christian
--
*** Christian Knoke * 25541 Brunsbüttel * http://cknoke.de ***
Reply to: