【问题标题】:"Archive:: command not found" while trying to use unzip command inside of shell function尝试在 shell 函数中使用解压缩命令时出现“找不到存档:: 命令”
【发布时间】:2019-09-09 19:48:53
【问题描述】:

我有一个很短的脚本,叫做“./wget_unzip.sh”:

#!/bin/sh
function wget_unzip {
    wget $1
    unzip ./patch\?zip
}

$(wget_unzip "https://www.mylinktoagerritpatch.org/patch?zip")

它应该会得到一个名为“patch?zip”的小 (~1KB) 存档,然后解压缩它(里面有一个 .diff 文件用于补丁)。这一行

unzip ./patch\?zip
  • 在脚本主体处工作正常;但是,如果移动到上面的函数内部,它会开始失败

    ./wget_unzip.sh: line 7: Archive:: command not found
    

如果我尝试用 /usr/bin/unzip 替换 unzip,我会得到另一个错误:

./wget_unzip.sh: line 7: UnZip:: command not found

使用另一个命令一切都很好 - wget - 所以我想知道解压缩有什么问题......

【问题讨论】:

  • /bin/sh 通常不是bash
  • 不要使用$( ) 来运行wget_unzip 函数——$( ) 用于捕获命令的输出,并将其用作一部分(或者在这种情况下是整个) 命令。你的函数没有输出命令,所以不要试图捕获并执行它的输出。
  • ShellCheck 自动检测到此问题。

标签: bash shell command sh unzip


【解决方案1】:

解压没有问题,只是你调用函数的方式
删除$()

【讨论】:

    猜你喜欢
    • 2012-03-06
    • 2018-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-30
    • 2012-02-08
    • 2022-08-18
    • 1970-01-01
    相关资源
    最近更新 更多