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 ```