2016-07-05 10 views
1

Ich versuche tempfile.pdf mit pdftk nach Strings zu teilen, die ich auf bestimmten Seitenzahlen gefunden habe. Diese Seitenzahlen befinden sich in der temporären Datei.Was mache ich hier falsch mit diesen Variablen?

n=0 
prefix1="startpoint" 
prefix2="stoppoint" 
while read p; do 
    echo $p > temp 
    `cat temp` = prefix1$n 
    echo $((p-1)) > temp 
    `cat temp` = prefix2$n 
    n=$((n+1)); 
done < tempfile 

pdftk tempfile.pdf cat $startpoint0-$stoppoint1 output $1/01-0.pdf 
pdftk tempfile.pdf cat $startpoint1-$stoppoint2 output $1/02-0.pdf 
pdftk tempfile.pdf cat $startpoint2-end output $1/03-0.pdf 

Aus irgendeinem Grund, den ich Fehler wie diese:

/usr/local/bin/skapa_digital_akt: rad 16: 1: kommandot finns inte 
/usr/local/bin/skapa_digital_akt: rad 18: 0: kommandot finns inte 
/usr/local/bin/skapa_digital_akt: rad 16: 6: kommandot finns inte 
/usr/local/bin/skapa_digital_akt: rad 18: 5: kommandot finns inte 
/usr/local/bin/skapa_digital_akt: rad 16: 13: kommandot finns inte 
/usr/local/bin/skapa_digital_akt: rad 18: 12: kommandot finns inte 
Error: Unexpected range end; expected a page 
    number or legal keyword, here: 
    Exiting. 
Errors encountered. No output created. 
Done. Input errors, so no output created. 
Error: Unexpected range end; expected a page 
    number or legal keyword, here: 
    Exiting. 
Errors encountered. No output created. 
Done. Input errors, so no output created. 
Error: Input page numbers include 0 (zero) 
    The first PDF page is 1 (one) 
    Exiting. 
Errors encountered. No output created. 
Done. Input errors, so no output created. 

Offensichtlich ist die Variablen Startpunkt/Stoppoint sind falsch eingestellt. Jeder könnte mir helfen?

Vielen Dank!

/Paul

Antwort

1

Was ist

`cat temp` = prefix1$n 

tun sollen? Sie sollten wissen: Es liest eine Befehlszeile von temp und führt es aus.

wenn Temp eine Zeile enthält mit 1 (und n ist == 0), dann wird der ausgeführte Befehl sein:

1 = prefix10 

Sie können sich oft helfen Skripte Debuggen von set -x auf dem Skript einsetzen oder es ruft mit sh -x yourscript.sh

0

Das funktionierte:

n=0 
while read p; do 
    echo $p > tempA$n 
    echo $((p-1)) > tempB$n 
    n=$((n+1)); 
done < tempfile 

startpoint0=$(cat tempA0) 
stoppoint1=$(cat tempB1) 
startpoint1=$(cat tempA1) 
stoppoint2=$(cat tempB2) 
startpoint2=$(cat tempA2) 


pdftk tempfile.pdf cat $startpoint0-$stoppoint1 output $1/01-0.pdf 
pdftk tempfile.pdf cat $startpoint1-$stoppoint2 output $1/02-0.pdf 
pdftk tempfile.pdf cat $startpoint2-end output $1/03-0.pdf