如何在 zsh 中创建 zip 文件,其中可以通过变量包含适当的文件/文件夹:
#!/bin/zsh
files="/var/log/install.log /var/log/jamf.log"
zip -r /private/tmp/archivtest.zip $files
不幸的是,这在 zsh 中不起作用,收到此错误消息:
zip 警告:名称不匹配:/var/log/install.log /var/log/jamf.log zip 错误:无事可做! (尝试:zip -r /private/tmp/archivtest.zip 。-i /var/log/install.log /var/log/jamf.log)
在 bash 中可以,但在 zsh 中不行
选项 1 - 数组:
#!/bin/zsh
files=(/var/log/install.log /var/log/jamf.log)
zip -r /private/tmp/archivtest.zip $files
选项 2 -
=
运算符:
#!/bin/zsh
files="/var/log/install.log /var/log/jamf.log"
zip -r /private/tmp/archivtest.zip ${=files}
在
zsh
中,变量不会自动按空格分割,与 bash
不同。 这里对 shell 之间的差异有一个很好的解释 - 标题为“脚本的主要差异”的部分更详细地描述了空格的处理。 这个答案有关于分词文档的链接,包括这个常见问题解答。