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

标签 bash shell grails gvm

我正在运行安装脚本,以在具有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来允许此操作,并且在启用后会中断。

考虑例如this section:

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

无论如何,这都不是好的bash代码,也不是惯用的bash代码,但它本身可以很好地工作。它找到包含“html”的行,并将其粘贴到变量中。然后,它检查变量是否为空。

但是,启用set -e时,如果变量为空,则脚本将退出,然后脚本才有机会对其进行查看并说明原因。

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

关于bash - 在bash脚本中运行时,GVM返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21744607/

相关文章:

validation - Grails供稿-插件,<pubDate> && <dc:date>,验证错误

bash - 如何在 grep 结果中保留换行符?

regex - 在 unix 中的字符串中第二次出现后删除所有内容

Bash 脚本无法执行 Go 命令

bash - 从列中提取信息并将其打印在单独的对齐列上

bash - 在bash数组中循环使用docker命令的参数?

grails - Jenkins Grails 插件未列出最新版本的 Grails

bash - expr 命令执行期间的错误信息 : expr: non-integer argument

linux - 检查文件中所有行的格式是否相同

grails - Grails-withTransaction block 中的异常不起作用