我把头往墙上撞,我肯定我只是太笨了。
我尝试使用lftp命令对监视文件夹中的文件运行for循环,基本上是一个备份和移动过程。但由于LFTP和循环的工作方式,如果我在所有操作完成之前处理目标上的文件,我会失败。
因此,我想做的是读取所有文件与 *.log,然后如果有说20个文件只处理10,那么在其下次运行过程中10个文件再次最终它将在一个点上的1个文件的时间。我可以循环通过一切罚款。只是似乎不能弄清楚如何只读取前10个文件,因为我说。
for FILE in *.log; do
lftp -p 2252 -u $FTPUser,$FTPPass $Location <<EOF
set ftp:ssl-allow no
set xfer:use-temp-file on
set xfer:temp-file-name *.tmp
set log:file/xfer /log/LFTP_$FILE.log;
mput $LogPath/$FILE
quit
EOF
if [ $? == "0" ]; then
rm $LogPath/$FILE
else
echo "Error"
fi
done;
2条答案
按热度按时间lf3rwulv1#
每个批处理只需要一个
lftp
连接。同样,don't use upper case for private variables和quote your variables;另请参见Why is testing “$?” to see if a command succeeded or not, an anti-pattern?,并注意将诊断消息发送到标准错误,而不是标准输出。
Bash不允许一次性将切片和前缀替换结合在一个数组上,因此我们将当前切片复制到
slice
,以便在每个条目前面添加$LogPath/
。jdgnovmf2#
使用数组:
解释
是一个只检索前10个元素 * 参数扩展