首页 > 解决方案 > 从 sh 语法到 Makefile 语法的条件

问题描述

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

更新.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-statementgithubmakefileshgnu-make

解决方案


另一种不需要大量引用、分号等的替代方法是利用 make 将在退出代码非零时停止执行规则的事实。

这通常会导致更容易维护 Makefile,规则更简单。

update:
        git fetch https://xxxxx
        git diff -q HEAD FETCH_HEAD || { echo "No Update" ; false ; }
        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

推荐阅读