Cygwin创建.tar.gz不能在for循环中工作

时间:2017-05-04 10:50:14

标签: bash unix cygwin tar

我有一系列文件夹,每个文件夹都包含各种子文件夹,文件等。我试图将它们压缩成.tar.gz

目标文件夹结构例如是G:/ datastore及以下,zip文件夹名为yyyymmdd

目的地将是例如G:/ datastore / archive和file不出所料地命名为yyyymmdd.tar.gz

每次执行此一个日常文件夹的longform命令可以正常工作....

tar -czvf /cygdrive/g/datastore/archive/20160108.tar.gz / cygdrive / g / datastore / 20160108

但是尝试使用for循环让这个突然间拉开多天失败......

我试过的语法;

20160107 20160108的一天;做tar -czvf /cygdrive/g/datastore/archive/{day}.tar.gz / cygdrive / g / datastore / {day};完成

我得到的错误是

tar:删除前导`/'来自会员名称 tar:/ cygdrive / e / tickstore / datastore / {day}:无法统计:没有这样的文件或目录 tar:由于先前的错误而退出失败状态

如果我尝试导航,所以我坐在目标目录中并删除文件路径,我得到一个稍微不同但基本相同的错误;

语法因此;

cd / cygdrive / g / datastore

20160107 20160108的一天;做tar -czvf /cygdrive/g/datastore/archive/{day}.tar.gz {day};完成

tar:{day}:无法统计:没有这样的文件或目录 tar:由于先前的错误而退出失败状态

1 个答案:

答案 0 :(得分:0)

详细阐述@Raman Sailopal在评论中所说的内容

您可以使用echo命令测试您的变量是否正确使用,请参阅这些示例,请注意在变量day之前使用美元符号:

使用{day}

$ for day in 20160107 20160108 ;do echo {day} ;done                             

输出:

{day}
{day}

使用${day}

$ for day in 20160107 20160108 ;do echo ${day} ;done

输出:

20160107
20160108