【发布时间】: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