我正在运行安装脚本,以在具有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.sh
或set +e
之外,您实际上无能为力。
关于bash - 在bash脚本中运行时,GVM返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21744607/