Có cách nào tốt hơn để có được những ký tự đầu tiên của một biến GNU make
hơnLấy chữ cái đầu tiên của một biến làm
FIRST=$(shell echo $(VARIABLE) | head -c 1)
(mà không phải là duy nhất trở nên cồng kềnh mà còn gọi là vỏ bên ngoài)?
Có cách nào tốt hơn để có được những ký tự đầu tiên của một biến GNU make
hơnLấy chữ cái đầu tiên của một biến làm
FIRST=$(shell echo $(VARIABLE) | head -c 1)
(mà không phải là duy nhất trở nên cồng kềnh mà còn gọi là vỏ bên ngoài)?
này là khá khủng khiếp, nhưng ít nhất nó không gọi shell
:
$(eval REMAINDER := $$$(VAR)) # variable minus the first char
FIRST := $(subst $(REMAINDER),,$(VAR)) # variable minus that
Các GNU Make Standard Library cung cấp một substr substr
chức năng
Arguments: 1: A string
2: Start offset (first character is 1)
3: Ending offset (inclusive)
Returns: Returns a substring
Tôi có không đã thử nghiệm nó, nhưng $(call substr,$(VARIABLE),1,1)
sẽ hoạt động
Tôi cho rằng nên là '$ (giá trị cuộc gọi, $ (VARIABLE), 1,1)'. –
gmsl dường như không hoạt động tốt với tính năng tự động hóa. Tôi nhận được một loạt các lỗi về không khớp nếu/else/endif, sau khi chỉ cần thêm dòng 'include gmsl'. –
@CraigMcQueen, 1) oops, cảm ơn, đã sửa. 2) không thể giúp bạn với điều đó, xin lỗi –
Kể từ khi tôi đi qua này trong tìm kiếm của riêng tôi và không tìm thấy những gì tôi đang tìm kiếm ở đây là những gì tôi đã kết thúc sử dụng để phân tích một số hex có thể được áp dụng cho bất kỳ tập nổi tiếng của nhân vật
letters := 0 1 2 3 4 5 6 7 8 9 a b c d e f
nextletter = $(strip $(foreach v,$(letters),$(word 2,$(filter $(1)$(v)%,$(2)) $v)))
sau đó
INPUT := 40b3
firstletter := $(call nextletter,,$(INPUT))
secondletter := $(call nextletter,$(firstletter),$(INPUT))
thirdletter := $(call nextletter,$(firstletter)$(secondletter),$(INPUT))
, vv
nó xấu xí nhưng nó vỏ thuyết bất khả tri
GNU Make không có built-in subst chức năng vòng, vì vậy tôi không nghĩ rằng điều này là dễ dàng hoặc rõ ràng. Có lẽ bạn có thể nghĩ ra cái gì đó liên quan đến '$ (patsubst) 'nhưng tôi không thể. – tripleee
Có thể trùng lặp: http://stackoverflow.com/questions/3703881/how-to-return-the-first-character-of-a-variable-in-gmake –