微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将 awk/grep 输出设置为环境变量?

如何解决如何将 awk/grep 输出设置为环境变量?

也许不是最好的命令,但它有效:

ip address show | awk '{print $2}' | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | grep "10.*"

这会输出以 10.* 开头的 IP,即: 10.71.179.60

我想要的是这个 IP 被设置为一个永久的环境变量(我认为它被称为) - 作为 $privateip

因此,cronjob 将每分钟运行一个包含此内容的 bash 脚本:

ip address show | awk '{print $2}' | grep -oE "\b([0-9]{1,3}\b" | grep "10.*"

将不时变化的IP从命令发送到:

export PRIVATEIP=*the output/IP of the above command*

因此,每当我在脚本中运行 $PRIVATEIP 时,都会获取 IP :)。这需要是永久性的。

有人知道怎么做吗?!

编辑 编辑 编辑

Timur Shtatland 解决了这个问题:

export PRIVATEIP=`ip address show | awk '{print $2}' | grep -oE "\b([0-9]{1,3}\b" | grep "10.*"`

但不是我有一个问题:D。在终端中手动运行时,这非常有效。但是当我将它作为 cronjob 运行时,比如:

* * * * * export PRIVATEIP=`ip address show | awk '{print $2}' | grep -oE "\b([0-9]{1,3}\b" | grep "10.*"`

* * * * * bash /path/to/script.sh

其中包含

#!/bin/bash
export PRIVATEIP=`ip address show | awk '{print $2}' | grep -oE "\b([0-9]{1,3}\b" | grep "10.*"`

...它不起作用。有什么想法吗?!

解决方法

export PRIVATEIP=$( ip address show | awk '{print $2}' | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | grep "10.*" )

export PRIVATEIP=`ip address show | awk '{print $2}' | grep -oE "\b([0-9]{1,3}\b" | grep "10.*"`

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。