如果批处理文件成功处理,我会打印一个日志文件。第3列显示失败的状态字母“F”或完成的“C”。第5列显示完整路径和批处理文件名。
日志文件输出示例:
392 02/04/2018:2:00 c 4444 /batchprocessing/abc.dat
444 02/04/2018:3:00 F 4442 /batchprocessing/mnop.dat
3333 02/04/2018:4:00 c 2234 /batchprocessing/xyz.dat
我正在尝试将状态为“F”的所有批处理文件gzip到备份目录,同时保持从没有路径的第5列拉出相同的文件名,只记录文件名。
代码:
while read -r f1 f2 f3 f4 f5 f6 f7 ; do
if [ "${f3}" = "F" ] ; then
gzip "${f6}" > /backup/batch_backups/"${f6}" cut -c 17-30
else
echo "No Error!"
fi
done < batch.log
cut -c 17-30
应该只提取文件名以外的文件名。
例如batch_backups应该使用上面日志文件中的示例输出mnop.dat.gz。
答案 0 :(得分:0)
捕获输出:
gzip "${f6}" > /backup/batch_backups/"$(cut -c 17-30 <<<"${f6}")".gz
但我认为这比你想要做的更好(XY问题),因为你试图从完整路径获取文件名:
gzip "${f6}" > /backup/batch_backups/"$(basename "${f6}")".gz
您也可以使用${f6##*/}
代替basename
。