需要帮助TAR shell脚本

时间:2014-09-28 13:38:30

标签: linux bash shell tar

我是shell脚本的新手。我为2个不同的输入文件编写了以下脚本:

#!/bin/sh
last=`ls [JKT-ABC]*.tar | sed s/.tar//g | sort -g | tail -1`
if(($last%1==0))
then
     tar -cf `date '+%W%b%d'`.tar [JKT-ABC]*.tar
fi

last=`ls [JKT-DEF]*.tar | sed s/.tar//g | sort -g | tail -1`
if(($last%1==0))
then
     tar -cf `date '+%W%b%d'`.tar [JKT-DEF]*.tar
fi

执行此脚本后,输出是一个名为.tar的{​​{1}}文件。因此,2个输入xxSep28文件已成为一个TAR(.tar)。这不是我想要的。

我的问题是:

  • 如何在脚本中输出/使用xxSep28文件的全名? (例如:tar
  • 为什么这个脚本将两个输出文件合并为一个?我如何将它们分开?

1 个答案:

答案 0 :(得分:1)

您的问题很难理解......您的脚本会创建一个名为

的tar文件
<week><month><day>.tar         # 38Sep28.tar today for example

然后立即用另一个具有相同名称和不同内容的tar文件覆盖它。

显而易见的事情是使两个tar命令分别写入不同的文件。所以我建议你将第一个tar命令更改为:

tar -cf "$(date '+%W%b%d')JKT-ABC.tar" something

和第二个

tar -cf "$(date '+%W%b%d')JKT-DEF.tar" something

还有另一个问题,我仍然不明白,这就是你的意思

[JKT-ABC]*.tar

它表示名称仅包含字母J,K,T到A(!),B或C后跟.tar的文件,因此它将匹配名为的文件:

JJ.tar
CBACBACBCCCCCCCC.tar

我认为这不是你的意思,特别是因为范围T through to A不太可能......