首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Makefile计算2个变量,然后使用非空变量。

Makefile计算2个变量,然后使用非空变量。
EN

Stack Overflow用户
提问于 2019-11-23 19:48:52
回答 1查看 68关注 0票数 0

我有一个运行CoreELEC (类似于LibreELEC的Linux发行版)的电视盒,我希望找到它的IP地址,然后使用SSH登录到它。

我知道以太网接口和Wifi接口的MAC地址。

我想在局域网(以太网或Wifi)中找到我的电视盒的IP地址,前提是我不知道电视盒目前使用哪个接口连接到LAN。

下列目标列表在评估“OR”时失败,因此无法工作:

代码语言:javascript
复制
TVBOX_IP=""

find-tvbox-eth-ip:
    @echo Checking the Ethernet IP address...
    $(eval TVBOX_ETH_IP=$(shell sudo arp-scan 192.168.0.1/24 2>&1 | grep $(TV_ETH_MAC) | awk '{print $$1}'))
    @echo Found an Ethernet IP address: "$(TVBOX_ETH_IP)"

find-tvbox-wifi-ip:
    @echo Checking the Wifi IP address...
    $(eval TVBOX_WIFI_IP=$(shell sudo arp-scan 192.168.0.1/24 2>&1 | grep $(TV_WLAN_MAC) | awk '{print $$1}'))
    @echo Found a Wifi IP address: "$(TVBOX_WIFI_IP)"

find-tvbox-ip: find-tvbox-eth-ip find-tvbox-wifi-ip
    @[ "$(TVBOX_ETH_IP)" ] && TVBOX_IP:=$(TVBOX_ETH_IP) || ( echo TVBOX_IP:=$(TVBOX_WIFI_IP) )
    @echo "Stored this IP for the TV BOX: " $(TVBOX_IP)

包含TVBOX_IP := $(or $(TVBOX_ETH_IP),$(TVBOX_WIFI_IP))的类似目标也不起作用。

  • 如何在其他目标中使用变量$(TVBOX_IP),确保它们的值首先来自以太网检查,然后来自Wifi检查?
  • 上面的Makefile目标有什么问题?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-24 09:02:07

有时,将逻辑转移到外部命令比较容易。使声明性方法有时很难控制:

考虑另一种选择:将条件移动到shell。

代码语言:javascript
复制
  # 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 $(或.)

代码语言:javascript
复制
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"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59011588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档