首页 > 解决方案 > 以下具有 while 循环和 if 语句的 bash 语句有什么问题

问题描述

while read line; 
    do if -f live_photos/$line; 
             then cp live_photos/$line other_live_photos 
       fi;  done < other_live_photos.csv

这里有什么问题?我得到一个意外的令牌即将完成,错误。

other_live_photos.csv 基本上是一组文件名。

标签: bashunix

解决方案


如果您有一个示例文件会有所帮助,这样我们就可以确定过滤条件是什么。基于存在other_live_photos.csv不包含字符串的其他条目的想法live_photos

while read line 
do 
 livePhotos=$(grep live_photos $line)
 cp $livePhotos other_live_photos 
done < other_live_photos.csv

如果它是文件中的每个行项目,那么只需排除变量:

while read line 
do 
 cp $line other_live_photos 
done < other_live_photos.csv

如果您试图在移动文件之前确定文件是否$line存在(如果它不存在该怎么办?什么都没有),那么:

while read line
 do 
   if [ -f  $line ] 
   then
    cp live_photos/$line other_live_photos 
   fi
 done < other_live_photos.csv

推荐阅读