Check response of git push from shell script

bash, git, github, shell

Solution

Your condition check should have been something like:-

#!/bin/bash

if [[ "$(git push --porcelain)" == *"Done"* ]]
then
  echo "git push was successful!"
fi

`-eq` is for integer comparisons, `==` is for string comparisons. The following illustrates the difference.

[[ 00 -eq 0 ]] && echo "zero is zero, regardless of its representation"
[[ 00 = 0 ]] || echo "00 and 0 are two different strings"

Problem

I'm trying to detect from bash if my `git push` was successful. I am checking for local changes previously in my script like this: ``` if [ -z "$(git status --porcelain)" ]; then ``` and that works fine. This is the expression I have tried but this one doesn't work, in fact it errors: ``` if [ "$(git push --porcelain)" -eq "Done" ]; then ``` yields: ``` Done: integer expression expected ``` When I run `git push --porcelain` from the command line, the output is `Done`. Does this mean I should be checking for that text in my condition? If I do the previous comparison, that doesn't work either, I get the same error: ``` 1 file changed, 309 insertions(+) Current branch master is up to date. Counting objects: 3, done. Delta compression using up to 4 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 3.59 KiB | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) bash: [: To https://github.com/blah... refs/heads/master:refs/heads/master 88aff43..cf0c97c Done: integer expression expected ```

Original source