首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bash本地IP地址并写入makefile中的文件?

Bash本地IP地址并写入makefile中的文件?
EN

Stack Overflow用户
提问于 2014-02-26 19:50:40
回答 2查看 2.5K关注 0票数 0

我试图使用ifconfig获取本地ip,并将其写入文件,但由于某种原因,没有这样做。

代码语言:javascript
复制
run:
    LOCALIP=$(shell ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1' | awk '{print $1}') &
    echo "var LOCAL_IP = '${LOCALIP}'" > local_ip.js &

它确实获得了正确的IP,但由于某种原因,它没有将其写入文件,并且文件只包含var LOCAL_IP = ''

有人能帮我说出我做错了什么吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-26 20:27:12

两个问题:第一个问题,Makefile食谱中的每个单独的命令都在单独的shell中执行,因此您需要“合并”它们。第二,您需要将回显中的$加倍,以便将其发送到shell,而不是首先由make展开。这应该是可行的:

代码语言:javascript
复制
run:
        LOCALIP=$(shell ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1' | awk '{print $1}'); \
        echo "var LOCAL_IP = '$${LOCALIP}'" > local_ip.js

分号和行继续反斜杠确保在同一个shell中执行整个菜谱,以便在运行LOCALIP时仍然设置echo。您可以通过将命令替换直接嵌入到echo的参数中来“简化”这一点。

代码语言:javascript
复制
run:
        echo "var LOCAL_IP = '$(shell ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1' | awk '{print $1}')'" > local_ip.js
票数 2
EN

Stack Overflow用户

发布于 2014-02-26 19:57:09

这个awk可以工作:

代码语言:javascript
复制
ifconfig | awk -F: '/inet addr/&& !($2 ~ /127\.0\.0\.1/){gsub(/ .*/, "", $2); print $2}'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22051789

复制
相关文章

相似问题

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