bash - 以下具有 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 基本上是一组文件名。
解决方案
如果您有一个示例文件会有所帮助,这样我们就可以确定过滤条件是什么。基于存在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
推荐阅读
- python - Python/Docker:FileNotFoundError:[Errno 2] 没有这样的文件或目录:
- python - 带有选项的 python 和 ngrok 给了我一个错误
- angular - 如何在管道中实现搜索和突出显示?
- powershell - Powershell CSV ForEach 行在另一个 csv 中搜索单元格值并返回匹配项
- azure-data-factory - 如何将变量添加到数据工厂 ARM 模板
- kubernetes - 如何在不使用 readinessProbe 的情况下将 pod 设置为未就绪?
- powershell - 绕过/接受来自 wget 的 Javascript 提示
- python - 如何总结python中的float列表?
- java - javax.xml.crypto.dsig.XMLSignatureException: java.security.SignatureException: 签名长度不正确:得到 128 但期待 512
- c# - Umbraco - System.Exception:Lucene.Net.Index.CorruptIndexException