Баш - принятие решений на основе результатов? - PullRequest
0 голосов
/ 27 мая 2019

Я пишу много процессов в BASH.Я не хочу создавать определенные предметы, если они уже обновлены в Git.

, если выдается git pull и результаты выглядят примерно так:

Already on 'master'
Your branch is up-to-date with 'origin/master'.
From https://github.com/xxx/yyyy
 * branch            master     -> FETCH_HEAD
Already up-to-date.

Как я могу основатьрешения на выходе git pull?

Попытки:

upstream ⚡ master) 17≡ $ git status
On branch master
nothing to commit, working tree clean

(upstream ⚡ master) 17≡ $ git pull origin master
From github.com:xxx/yyy  m
 * branch            master     -> FETCH_HEAD
Already up to date.

(upstream ⚡ master) 17≡ $ git pull origin master 2>/dev/null |grep -q "Already up-to-date"

(upstream ⚡ master) 17≡ $

Попытка 2:

$ git pull origin master 2>/dev/null | grep -q "Already up-to-date"; echo $?
1
$

Попытка 3:

$ git pull origin master 2>/dev/null |grep -q "Already up-to-date"; echo $?
1

$ git pull origin master
From github.com:cocos2d/cocos2d-x-docs
 * branch            master     -> FETCH_HEAD
Already up to date.

$ git status
On branch master
nothing to commit, working tree clean

$ git pull origin master 2>/dev/null |grep -q "Already up-to-date"; echo $?
1

Попытка 4:

$ git pull origin master 2>/dev/null |cat
Already up to date.

$ git pull origin master 2>/dev/null | grep -q "Already up-to-date"; echo $?
1

1 Ответ

1 голос
/ 27 мая 2019

Это вернет true (0) , если вывод git pull содержит Already up-to-date:

git pull | grep -q "Already up-to-date"

Затем вы можете поместить его в if заявление для условного действия. Например:

if git pull | grep -q "Already up-to-date"; then
    echo "Building stuff"
else
    echo "Not building stuff"
fi

Ваши попытки терпят неудачу, потому что git печатает up to date без черточек, но команда grep ищет up-to-date с черточками, что и говорит ваш пример вывода. (Кстати, я использую git 2.7.4, который печатает up-to-date.) Этот вид вывода может меняться между версиями git, поэтому есть более стабильный способ проверки такого рода вывода, но я не уверен что это такое: /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...