从sh语法到Makefile语法的条件

问题描述 投票:0回答:1

我有某个文件UPDATE.sh。这个文件的任务是使用git merge更新我的程序。

UPDATE.sh:

#!/usr/bin/env bash

git fetch https://xxxxx

newUpdatesAvailable=`git diff HEAD FETCH_HEAD`

if [[ "$newUpdatesAvailable" != "" ]]
then
        git branch backup
        git checkout backup
        git add .
        git add -u
        git commit -m date "+%d.%m.%Y"
        git checkout master

        git merge FETCH_HEAD
else
        echo "No updates..."
fi

除了在Make语法上,我必须写同样的东西。

我试图弄清楚Make中的条件,但对我来说没有用。

请告诉我如何在不使用Makefile的情况下正确编写此代码:

update:
      ./UPDATE.sh
if-statement github makefile sh gnu-make
1个回答
0
投票

您无需捕获git diff的输出;您只需要知道是否存在差异即可。使用-q选项。if ! git diff -q HEAD FETCH_HEAD; then git branch backup ... else echo "No updates" fi

[-q抑制输出并隐含--exit-code,如果存在差异,这将导致git diff以非零退出状态退出。

在Makefile中,应该是

update: git fetch https://xxxxx if ! git diff -q HEAD FETCH_HEAD; then \ git branch backup \ git checkout backup \ ... \ else \ echo "No updates" \ fi

反斜杠是必需的,因为整个if语句必须出现在一条逻辑行上。
© www.soinside.com 2019 - 2024. All rights reserved.