Rod*_*ers 4 git bash shell github
我试图从bash中发现我git push是否成功.我正在检查以前在我的脚本中的本地更改,如下所示:
if [ -z "$(git status --porcelain)" ]; then
Run Code Online (Sandbox Code Playgroud)
这很好.这是我试过的表达,但是这个表达不起作用,实际上是错误:
if [ "$(git push --porcelain)" -eq "Done" ]; then
Run Code Online (Sandbox Code Playgroud)
收益率:
Done: integer expression expected
Run Code Online (Sandbox Code Playgroud)
当我从命令行运行时git push --porcelain,输出是Done.这是否意味着我应该在我的条件下检查该文本?
如果我进行上一次比较,那也不起作用,我得到同样的错误:
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
Run Code Online (Sandbox Code Playgroud)
use*_*001 11
git push 成功时返回零退出代码,失败时返回非零.
所以你可以写:
if git push
then
echo "git push succeeded"
else
echo "git push failed"
fi
Run Code Online (Sandbox Code Playgroud)
你的病情检查应该是这样的: -
#!/bin/bash
if [[ "$(git push --porcelain)" == *"Done"* ]]
then
echo "git push was successful!"
fi
Run Code Online (Sandbox Code Playgroud)
-eq用于整数比较,==用于字符串比较.以下说明了不同之处.
[[ 00 -eq 0 ]] && echo "zero is zero, regardless of its representation"
[[ 00 = 0 ]] || echo "00 and 0 are two different strings"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1764 次 |
| 最近记录: |