我是 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
执行此脚本后,输出是一个名为:xxSep28
的 .tar
文件。因此,2 个输入 .tar
文件已成为 1 个 TAR (xxSep28
)。这不是我想要的。
我的问题是:
- 如何在脚本中输出/使用
tar
文件的全名? (例如:xx.Sep28.JKT-ABC
) - 为什么这个脚本将两个输出文件合并为一个?如何将它们分开?
最佳答案
你的问题很难理解...你的脚本创建了一个名为的 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 到 A
的范围不太可能......
关于linux - 需要 TAR shell 脚本帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26085448/