我正在运行一个安装脚本,用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时遇到了同样的问题吗?
发布于 2014-02-13 05:46:52
为了使用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.sh或set +e之外,没有什么可以做的。
https://stackoverflow.com/questions/21744607
复制相似问题