[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: