Makefile:拆分字符串并循环结果

时间:2016-07-18 18:07:59

标签: makefile gnu-make

我正在尝试在makefile中编写一个目标,该目标将从.mk文件中读取一个变量(具有IP),如果找到一个空格分隔列表,则将其拆分并采取一些操作。

问题我面临的问题是字符串没有拆分,而for循环也没有得到值。

尝试过以下

GWTS_FE_IPS=2600:40f0:3e::2 2600:40f0:3e::3 2600:40f0:3e::4 2600:40f0:3e::5

test:
    $(eval IPS=$(shell echo "$(GW_IPS)" |awk -F " " '{print NF}'))
    if [ ${IPS} -gt 1 ]; then \
        echo "Multiple Ips [$(GW_IPS)]"; \
        for ip in $(shell echo "${GW_IPS}" | sed -e 's/ /\n/g'); \
        do \
            echo ".... $(ip) ...."; \
        done \
    else \
        echo "Single IP [$(GW_IPS)]"; \
    fi

我得到的结果是

2600:40f0:3e::2n2600:40f0:3e::3n2600:40f0:3e::4n2600:40f0:3e::5
if [ 4 -gt 1 ]; then \
        echo "Multiple Ips [2600:40f0:3e::2 2600:40f0:3e::3 2600:40f0:3e::4 2600:40f0:3e::5]"; \
        for ip in 2600:40f0:3e::2n2600:40f0:3e::3n2600:40f0:3e::4n2600:40f0:3e::5; \
        do \
            echo "....  ...."; \
        done \
    else \
        echo "Single IP [2600:40f0:3e::2 2600:40f0:3e::3 2600:40f0:3e::4 2600:40f0:3e::5]"; \
    fi
Multiple Ips [2600:40f0:3e::2 2600:40f0:3e::3 2600:40f0:3e::4 2600:40f0:3e::5]
....  ....

任何人都可以给出一些指示。

1 个答案:

答案 0 :(得分:1)

你试图在没有测试任何东西的情况下同时做太多事情。当您尝试使用新工具时,请一次尝试

{{1}}