GVM 在 bash 脚本中运行时返回错误



我正在运行一个安装脚本,以便在带有GVM的新机器上安装Grails。

#!/bin/bash
set -e
source "/Users/mecca831/.gvm/bin/gvm-init.sh"
echo "Install grails"
gvm install grails 2.1.1

在这种情况下,GVM 返回 1,这会破坏我的脚本。但是,如果删除set -e脚本,脚本将起作用。它返回 0,并且将显示正确的提示。有人在尝试使用 GVM 安装 Grails 时遇到同样的问题吗?

非平凡脚本必须专门编写才能与set -e一起运行。

gvm-init.sh尚未编写为允许此操作,并在启用时中断。

例如,请考虑此部分:

GVM_DETECT_HTML="$(echo "$GVM_RESPONSE" | tr '[:upper:]' '[:lower:]' | grep 'html')"
if [[ -n "$GVM_DETECT_HTML" ]]; then
    ...

无论如何,这不是好的或惯用的 bash 代码,但它本身就足够好用了。它找到包含"html"的行,并将它们粘贴到变量中。然后它检查变量是否为空。

但是,当您启用 set -e 时,如果变量为空,则脚本将退出,然后脚本才有机会查看它并说明这一点。

除了在运行任何受影响的代码之前重写gvm-init.shset +e之外,您对此无能为力。

相关内容

  • 没有找到相关文章

最新更新