我需要做这样的事情:
case `uname -m` in
i?86) echo "CFLAGS += -march=i486 -mtune=native" > configparms ;;
esac
但我需要在makefile中为特定目标执行此操作。我还没有找到一种用正则表达式创建if条件的方法。
我试过了:
ifeq ($(shell uname -m), i*86)
但它不起作用。 甚至
ifeq ($(shell uname -m), i686)
不起作用。
答案 0 :(得分:1)
你可以这样做。只需通过转义该行的末尾,确保您的case
语句“在一行”:
uname -m | grep -E 'i.86' >/dev/null \
case $$? in \
0) echo Matches \
;; \
1) echo No match \
;; \
esac
另请注意,$?
实际上是$$?
,以防止make
在将其传递给解释器之前尝试展开它。
答案 1 :(得分:1)
使用Makefile内置条件(与Ωmega's Bash solution相反)
ifeq ($(shell uname -m | egrep "i.86"),) # empty result from egrep
@echo "No match"
else
@echo "Match"
endif
请参见此处,使用这种方法来验证Git标签https://gist.github.com/jesugmz/a155b4a6686c4172048fabc6836c59e1。
答案 2 :(得分:-2)
if uname -m | grep -Eq 'i.86'
then
echo 'Yesss!'
fi