查找命令结果,不会写入输出

时间:2018-06-12 09:40:04

标签: linux bash shell

我有以下脚本,需要在网站上找到所有PDF关联页面。 PDF_Search_File.txt内容为PDF文件的URL

Example : /static/pdf/pdf1.pdf
          /static/pdf/pdf2.pdf 

但是发现结果没有写入输出文件。这里有问题并在下面发布

find . -type f -exec grep -l '$name' '{}' \; >>output_pdf_new.txt

任何信息都会有所帮助。

#!/bin/bash
filename="PDF_Search_File.txt"
while read -r line
do
        name="$line"
                echo "*******pdf******** - $name\n" >>output_pdf_new.txt
        find . -type f -exec grep -l '$name' '{}' \; >>output_pdf_new.txt
                echo "*******pdf******** - $name\n" >>output_pdf_new.txt
done < "$filename"

2 个答案:

答案 0 :(得分:1)

变量$ name应使用双引号"$name"而不是单引号。这是处理单引号和双引号的典型shell行为。

答案 1 :(得分:0)

问题在于,由于将输出重定向到文件echo不会显示文本,因此您可以使用tee -a来执行这两项操作,例如:

#!/bin/bash
filename="PDF_Search_File.txt"
while read -r line
do
        name="$line"
        echo "*******pdf******** - $name" | tee -a output_pdf_new.txt
        find . -type f -exec grep -l "$name" '{}' \; | tee -a output_pdf_new.txt
        echo "*******pdf******** - ${name}" | tee -a output_pdf_new.txt
done < "$filename"