【问题标题】:What am I doing wrong here with these variables?我在这些变量上做错了什么?
【发布时间】:2016-11-07 02:59:55
【问题描述】:

我正在尝试根据我在某些页码上找到的字符串将 tempfile.pdf 与 pdftk 拆分。这些页码在 tempfile 中。

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

由于某种原因,我收到如下错误:

/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.

显然变量起点/终点设置错误。谁能帮帮我?

非常感谢!

/保罗

【问题讨论】:

    标签: bash loops variables pdftk


    【解决方案1】:

    这行得通:

    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
    

    【讨论】:

      【解决方案2】:

      什么是

      `cat temp` = prefix1$n
      

      应该怎么做?你应该知道:它从temp 读取一个命令行并执行它。

      如果 temp 包含带有1 的行(并且n== 0),那么执行的命令将是:

      1 = prefix10
      

      您通常可以通过在脚本顶部插入set -x 或使用sh -x yourscript.sh 调用它来帮助自己调试脚本

      【讨论】:

        猜你喜欢
        • 2011-08-17
        • 2019-03-05
        • 2020-08-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多