我需要在Makefile中接受一个参数,该参数由一个主机标识符组成,格式为
host[:port]
其中冒号和端口是可选的。因此,以下所有内容都是有效的:
foo.example.com
ssl.example.com:443
localhost:5000
等。
我想拆分可选冒号上的字符串,并将值分配给变量,这样HOST
包含foo.example.com
、ssl.example.com
、localhost
等,而PORT
分别包含80 (默认端口)、443和500。
发布于 2011-12-17 06:07:34
# Retrieves a host part of the given string (without port).
# Param:
# 1. String to parse in form 'host[:port]'.
host = $(firstword $(subst :, ,$1))
# Returns a port (if any).
# If there is no port part in the string, returns the second argument
# (if specified).
# Param:
# 1. String to parse in form 'host[:port]'.
# 2. (optional) Fallback value.
port = $(or $(word 2,$(subst :, ,$1)),$(value 2))
用法:
$(call host,foo.example.com) # foo.example.com
$(call port,foo.example.com,80) # 80
$(call host,ssl.example.com:443) # ssl.example.com
$(call port,ssl.example.com:443,80) # 443
https://stackoverflow.com/questions/8540485
复制相似问题