我正在尝试检查一个文件夹是否是git或svn仓库的一部分。 我使用以下命令来获取并将错误代码存储在变量中。
RSVN=`svn status &> /dev/null; echo $?`
RGIT=`git status &> /dev/null; echo $?`
事情是我总是得到0作为错误代码。
我在命令行中尝试,得到了预期的结果。
user@host trunk$ svn status &> /dev/null;
user@host trunk$ echo $?
0
user@host trunk$ git status &> /dev/null;
user@host trunk$ echo $?
128
但是当我运行脚本时,会出现以下错误:
+ + svn status
+ echo 0
+ RSVN=0
M buildpackage
+ git status
+
+ echo 0
fatal: Not a git repository (or any parent up to mount point /build)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
+ RGIT=0
这个被称为下标的方法是由其他脚本调用的。 第一个脚本。
#!/bin/sh -x
#set -e
#do stuf
. ../../../tools/second_script.sh
第二个脚本
#!/bin/sh -x
set -e
#do stuf
RSVN=`svn status &> /dev/null; echo $?`
RGIT=`git status &> /dev/null; echo $?`
你知道这是为什么吗?这是发生了什么问题?
&
,看它是否按预期工作了吗? - Fazlinset -e
命令,你的脚本将在第一个非零退出状态时停止。 - simno