2011-12-16 36 views
19

tôi cần phải thực hiện một tham số trong Makefile của tôi mà bao gồm một định danh máy chủ theo hình thứcTôi làm cách nào để tách một chuỗi?

host[:port] 

nơi ruột và cổng là không bắt buộc. Vì vậy, tất cả những điều sau đây là hợp lệ:

foo.example.com 
ssl.example.com:443 
localhost:5000 

, vv

Tôi muốn chia chuỗi trên đại tràng tùy chọn và gán các giá trị cho các biến, do đó HOST chứa foo.example.com, ssl.example.com, localhost vv và PORT chứa 80 (cổng mặc định), 443 và 500 tương ứng.

Trả lời

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)) 

Cách sử dụng:

$(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 
Các vấn đề liên quan