当文件名由变量构造时,如何让' zip '添加.zip扩展名



如果我运行…

$ myTest="bar"
$ zip -r foo-${myTest} path/*

…然后我得到一个名为foo-bar.zip的zip文件。(注意.zip扩展名!)但是,如果我运行…

$ myTest="1.0.1"
$ zip -r foo-${myTest} path/*

…然后我得到一个名为foo-1.0.1的zip文件。(无.zip扩展!)

我显然可以添加.zip到我的脚本,但我想了解这里发生了什么。为什么不zip添加扩展名时,文件名是建立从一个变量与数字在它?

当我写下最后一个问题时,我明白了这与数字无关。引用自man zip:

如果zip文件的名称不包含扩展名,则添加扩展名"。zip"。如果名称中已经包含了.zip以外的扩展名,那么现有的扩展名将保持不变。但是,拆分归档(拆分多个文件的归档)需要在最后一次拆分时使用.zip扩展名。

问题是我在变量中有. 's, zip将其解释为文件扩展名。幸运的是,我的脚本使用.构造变量,因此我可以放心地将.zip添加到末尾。否则,我需要测试. 's以正确命名文件。

最新更新