【问题标题】:zip command behaving differently in different bash scriptszip 命令在不同的 bash 脚本中表现不同
【发布时间】:2022-01-04 22:51:19
【问题描述】:

我有 2 个使用 zip 命令的 bash 脚本,但一个脚本 zip 命令给出以下错误。

压缩警告:名称不匹配:file1.txt file2.txt

这是我在两个脚本中都使用的命令。

zip "${updates_zip}.patch.zip" $(ls)

我试图打印目录的内容并且 file1.txt 和 file2.txt 存在,但 zip 命令仍然给出上述错误。 似乎在 1 个脚本中它考虑了 file1.txt file2.txt 2 个不同的文件,但在另一个脚本中,它正在考虑 file1.txt file2.txt 一个名称中包含空格字符的单个文件。但是,我没有用引号将文件名括起来。两个脚本的 zip 命令的编写方式与上述完全相同。

【问题讨论】:

  • 为什么不将该单线分解为单独的步骤并将每个结果分配给单独的变量?调试变得更容易。编辑:编辑后:请提供minimal reproducible example 以及$(ls) 打印的示例。它看起来像一个薄弱环节。
  • 是的,我试过没有密码的 zip 命令,但还是一样
  • 我提供了给出错误的 zip 命令。无法分享完整的脚本。
  • 我不是要完整的脚本。 minimal reproducible example 不是这样的。
  • 不要使用$(ls)。请改用*

标签: linux bash zip centos7


【解决方案1】:

您的其他脚本可能修改了 IFS 变量。而不是使用 ls,只需使用如下文件名扩展。

zip "${updates_zip}.patch.zip" *.txt

【讨论】:

    猜你喜欢
    • 2019-10-13
    • 1970-01-01
    • 2019-04-01
    • 1970-01-01
    • 2022-01-16
    • 2019-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多