我无法弄清楚这段代码中的问题。谁能帮我?

时间:2014-12-10 04:38:35

标签: shell

#!/bin/sh
echo "Enter the directory name from where you want to process the pdf documents"  
read fname 
for FILE in $fname/*.pdf
do
   echo $FILE
   outdir=../processedpdf
   mkdir -p "$outdir"
  java -jar tika-app-1.6.jar --xml "$FILE" >"$outdir/${FILE%.pdf}.xml" \
    || rm -- "$outdir/${FILE%.pdf}.xml"
done

我无法建立另一个源文件来执行文件,任何人都可以帮助我吗? 我无法分配不同的文件夹名称来执行其文件。

2 个答案:

答案 0 :(得分:0)

通过查看您的脚本,您似乎正在尝试将pdf文件转换为xml文件,并将转换后的文件存储在processedpdf目录中。

我对你的剧本做了一些修改。

#!/bin/bash

echo "Enter the directory name from where you want to process the pdf documents"  
read fname 

# Create directory only if it does not exist.
[[ -d ../processedpdf ]] || mkdir ../processedpdf

for FILE in "${fname}"/*.pdf
do
    echo "$FILE"
    java -jar tika-app-1.6.jar --xml "$FILE" > "$outdir/${FILE%.pdf}.xml"
done

我所做的修改是。

  1. 已将mkdir ../processedpdf移到循环之外,因为没有必要重复它。
  2. 你不需要|| rm -- "$outdir/${FILE%.pdf}.xml"。因为如果文件转换失败,那么根本不会创建"$outdir/${FILE%.pdf}.xml"文件,因此没有必要将其删除。
  3. 已将您的shell从bourne更改为bash

答案 1 :(得分:0)

for FILE in $fname/*.pdf
do
   echo $FILE
   outdir=../processedpdf
   mkdir -p "$outdir"
  java -jar tika-app-1.6.jar --xml "$FILE" >"$outdir/${FILE%.pdf}.xml" \
    …
     

如何指定其他父文件夹...

您的代码存在的问题是$FILE包含路径$fname,因此前置$outdir不会产生所需的,但可能不存在的文件夹路径。例如:
fname=R⇒e。 G。 FILE=R/Rplots.pdf>"../processedpdf/R/Rplots.xml"

要获得所需的$outdir路径,必须删除$fname,例如:克。

   BASEFILE=${FILE##*/}
   java -jar tika-app-1.6.jar --xml "$FILE" >"$outdir/${BASEFILE%.pdf}.xml" \
    …