Makefile评估2个变量,然后使用非空变量
我有一个运行Corelec(类似于LibreELEC的Linux发行版)的电视盒,我想找到它的IP地址,然后使用SSH登录到它 我知道以太网接口和Wifi接口的MAC地址 我想在局域网(以太网或Wifi)中查找电视盒的IP地址,前提是我不知道电视盒当前使用哪个接口连接到局域网 以下目标列表不起作用,因为在评估“或”时失败: 包含Makefile评估2个变量,然后使用非空变量,makefile,gnu-make,Makefile,Gnu Make,我有一个运行Corelec(类似于LibreELEC的Linux发行版)的电视盒,我想找到它的IP地址,然后使用SSH登录到它 我知道以太网接口和Wifi接口的MAC地址 我想在局域网(以太网或Wifi)中查找电视盒的IP地址,前提是我不知道电视盒当前使用哪个接口连接到局域网 以下目标列表不起作用,因为在评估“或”时失败: 包含TVBOX\u IP:=$(或$(TVBOX\u ETH\u IP),$(TVBOX\u WIFI\u IP))的类似目标也不起作用 在确保变量的值首先来自以太网检查,
TVBOX\u IP:=$(或$(TVBOX\u ETH\u IP),$(TVBOX\u WIFI\u IP))
的类似目标也不起作用
- 在确保变量的值首先来自以太网检查,然后来自Wifi检查之后,如何在其他目标中使用变量
$(TVOX_IP)
- 上面的Makefile目标有什么问题
# Notice this is definition, will not force immediate evaluation
TVBOX_ETH_IP= sudo arp-scan 192.168.0.1/24 2>&1 | grep $(TV_ETH_MAC) | awk '{print $$1}'
TVBOX_WIFI_IP=sudo arp-scan 192.168.0.1/24 2>&1 | grep $(TV_WLAN_MAC) | awk '{print $$1}'
find-tvbox-ip:
IP=$$(${TVBOX_ETH_IP}) ; [ "$$IP" ] || IP=$$(${TVBOX_WIFI_IP}) ; echo "IP=$$IP"
或将条件保持在make$(或…)
似乎您正在尝试使用makefile来执行系统管理任务。请阅读:
# Notice this is definition, will not force immediate evaluation
TVBOX_ETH_IP= sudo arp-scan 192.168.0.1/24 2>&1 | grep $(TV_ETH_MAC) | awk '{print $$1}'
TVBOX_WIFI_IP=sudo arp-scan 192.168.0.1/24 2>&1 | grep $(TV_WLAN_MAC) | awk '{print $$1}'
find-tvbox-ip:
IP=$$(${TVBOX_ETH_IP}) ; [ "$$IP" ] || IP=$$(${TVBOX_WIFI_IP}) ; echo "IP=$$IP"
TVBOX_ETH_IP=$(shell sudo arp-scan 192.168.0.1/24 2>&1 | grep $(TV_ETH_MAC) | awk '{print $$1}')
TVBOX_WIFI_IP=$(shell sudo arp-scan 192.168.0.1/24 2>&1 | grep $(TV_WLAN_MAC) | awk '{print $$1})'
TVBOX_IP=$(or ${TVBOX_ETH_IP}, ${TVBOX_ETH_IP})
find-tvbox-ip:
IP=${TVBOX_IP} ; echo "IP=$$IP"