我正在尝试从我的 subversion 命令中获取版本号,以便我可以检查我们是否在 bash 脚本中加载了 write subversion 模块。
交互式地,这是一个示例使用:
> svn --version | head -n1 | grep -q '1.7'; echo $?
0
但是,当我将同一行(仅此而已)放在脚本中并运行脚本时:
> ./setup_svn.sh
1
此外,该脚本的运行速度明显快于交互式 shell 命令。有没有人知道我可能缺少什么来解释这个结果?
编辑
事实证明,我的交互式 bash 脚本使用了错误的 svn 命令。不知道究竟是为什么,但我认为这可能是 Unix StackExchange 的一个问题。
这几乎肯定与我们工作站上的模块系统有关,交互式运行我得到:
> module list
Currently Loaded Modulefiles:
...
12) subversion/1.7.7
> which svn
/usr/bin/svn
> svn --version
svn, version 1.7.7 (r1393599)
...
在脚本中运行,我得到:
> ./setup_svn.sh
Currently Loaded Modulefiles:
...
12) subversion/1.7.7
/usr/bin/svn
svn, version 1.6.17 (r1128011)
...
进一步编辑
似乎如果我启动一个新的 shell,我也会遇到同样的问题:
> bash
> module list
Currently Loaded Modulefiles:
...
12) subversion/1.7.7
> svn --version
svn, version 1.6.17 (r1128011)
我想我会找出我们的模块系统对环境做了什么,并用它来找出问题所在。