I want to do something like:
if [[ git status &> /dev/null ]]; then
echo "is a git repo";
else
echo "is not a git repo";
fi
except I don t know how to check the exit status. How do I fix this?
I want to do something like:
if [[ git status &> /dev/null ]]; then
echo "is a git repo";
else
echo "is not a git repo";
fi
except I don t know how to check the exit status. How do I fix this?
The variable $?
contains the last commands return code
EDIT: precise example:
git status &> /dev/null
if [ $? -eq 0 ]; then
echo "git status exited successfully"
else
echo "git status exited with error code"
fi
Simply like that
if git status &> /dev/null
then
echo "is a git repo";
else
echo "is not a git repo";
fi
Or in a more compact form:
git status &> /dev/null && echo "is a git repo" || echo "is not a git repo"
Another form that I often use is the following:
git status &> /dev/null
if (( $? )) then
desired behavior for nonzero exit status
else
desired behavior for zero exit status
fi
This is slightly more compact than the accepted answer, but it does not require you to put the command on the same line as in gregseth s answer (which is sometimes what you want, but sometimes becomes too hard to read).
The double parentheses are for mathematical expressions in zsh. (For example, see here.)
Edit: Note that the (( expression ))
syntax follows the usual convention of most programming languages, which is that nonzero expressions evaluate as true and zero evaluates as false. The other alternatives ([ expression ]
, [[ expression ]]
, if expression
, test expression
, etc.) follow the usual shell convention, which is that 0 (no error) evaluates as true and nonzero values (errors) evaluate as false. Therefore, if you use this answer, you need to switch the if
and else
clauses from other answers.
Im having some confusion with my git usage. I cloned a repo from one comp to the other, and the new clone is the state of the original that was active some time ago. So its cloning a past version. ...
I was wondering if the strategy I m using for tagging and hotfixing tags (which then I use for deploying rails applications) with git is appropriate. For tagging I just tag a commit of the master ...
I have a svn repo with various apps as subdirectory of a single svn repo. That worked because I could have checked out a partial, repo. As I cant do that with git obviously I need multiple repos. I ...
I understand how to merge branches together in git, and I love how easy it makes it. I have a branch that looks like this: project/ |--subproj1/ | |---(files) | |--subproj2/ |---(files) A ...
We still use CVS, I use git and hg for my personal use though I m still a novice at both, but I realize they re much more modern and better, faster, distributed, etc. It s just everyone is so ...
I get this on every git svn command I try. I am using git version 1.6.4.2 on OS 10.6 The initial git svn fetch works, and i can do further fetches after that, but they do not enter the log or update ...
Given I have a master branch and a other branch. In the other branch are files I don t want to commit (e.g. log files) so I ignored them in .gitignore. When I switch to the master branch, these ...
Using Git at home has spoiled me - I now find using TFS at work to be a bit of a drag and want to explore the possibility of using Git locally and syncing somehow with TFS. I figure there are a few ...