我有两个文件夹original_images和pdf_backup。这些文件夹包含pdf文件,如果我将该位置保存在变量中,如何循环遍历所有pdf文件。

if some count > 10 
  location=/home/BACKUP/teamshare2/my\ Raw\ Data/"$1"/"$2"/"$3"/original_images/*.pdf
else
  location=/home/BACKUP/teamshare2/my\ Raw\ Data/"$1"/"$2"/"$3"/pdf_backup/*.pdf
for f in $location
      ---pdf files---

当我这样做时,for loop没有执行,但是如果我直接给出该路径,则意味着循环正在执行。为什么这样?我该如何解决?先感谢您

分析解答

不要将通配符存储在变量中;只需将路径的固定部分存储在变量中,将对它的引用放在double-quotes中,这样就不会被路径中的空格弄糊涂,然后将通配符部分放在不带引号的位置:

if some count > 10 
  location="/home/BACKUP/teamshare2/my Raw Data/$1/$2/$3/original_images"
else
  location="/home/BACKUP/teamshare2/my Raw Data/$1/$2/$3/pdf_backup"
for f in "$location"/*.pdf

(注意:我也切换到了一种更简单的everything-in-double-quotes格式来设置location,而不是混合使用转义符和double-quotes。)