Check response of git push from shell script
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
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
2 Solutions collect form web for “Check response of git push from shell script”
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"
git push returns a zero exit code on success, and non-zero on failure.
So you can write:
if git push then echo "git push succeeded" else echo "git push failed" fi