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

Re: OT: Bash-Scripting



Hey,

Am 01.12.18 um 16:16 schrieb Christian Knoke:
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
Fehler beim Copy-Paste, sorry.
In echt sind die da.
2. bash hat keine regex, nur pattern matching mit extglob, siehe man bash.
Danke, das werde ich mir anschauen.
3. du meinst: DATEI0@(0[8-9]|1[0-1])
den Unterschied darf ich mir auch anschauen ;-)

4. shell globbing sortiert nicht alphabetisch, die Seiten können also
durcheinander geraten
Danke für den Hinweis, bis jetzt klappte es ganz gut,
aber ich werde es im Auge behalten.
# 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.
pdftk /pfad/zur/pdf/DATEI0+(0[8-9]|1[0-1]).PDF cat output full.pdf

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
    ^^----genau das war es. Danke
seite='0[8-9]|1[0-1]' ; pdftk ~/DATEI0@($seite).PDF cat output full.pdf
klappt.
klappt aber auch mit:
    pdftk ~/DATEI0+($seite).PDF cat output full.pdf

Vielen Dank und Beste Grüße
Vincent
Gruß
Christian
Schönen 1. Advent
Vincent

Reply to: