无需管道即可获取单个IP地址

Get single IP address without pipe

Centos7 使用 bash。我需要设置一个环境变量,$IP。但是,设置变量的命令是通过公司系统完成的,该系统期望 | 作为变量之间的分隔符(即,我将以 myIP=something|myOtherIP=something_else|envVar3=17 形式向系统传递一个列表)。

我正在计划 IP 地址始终为内部 (10.x.x.x) 的用例。是否有任何命令可以 return 仅我关心的一个 IP 地址,而无需使用管道?

hostname -i return地址错误(不是以 10. 开头)。 hostname -I 包含正确的地址,但它在七个地址列表中排在第二位。我可以使用 hostname -Iifconfig 轻松获得 IP,但它涉及管道到 grep,然后使用正则表达式找到以 10 开头的 IP。我怀疑是否有任何简单的方法(老实说,我怀疑这是可能的),但我想我还是会问。

是这样的吗?

grep -o  "10[^ ]*"<<<`hostname -I`

作为 abhishek phukan 答案的替代方案,如果您总是想要列表中的第二个 IP - 您可以使用:

cut -f2 -d' ' <<< `hostname -I`

感谢 abhishek 的精彩回答!