上下文 在* nix系统上,可以用shell脚本获取机器的IP地址:
ifconfig | grep 'inet' | grep -v '127.0.0.1' | cut -d: -f2 | awk '{print $1}'
或者也是这样:
ifconfig | grep 'inet' | grep -v '127.0.0.1' | awk '{print $2}' | sed 's/addr://'
问题: 是否有更简单,仍然可移植的方式来获取在shell脚本中使用的IP地址?
(my apologies to *BSD and Solaris users as the above command may not work;我无法测试)
答案 0 :(得分:12)
只需一个awk命令即可完成。不需要使用太多管道。
$ ifconfig | awk -F':' '/inet addr/&&!/127.0.0.1/{split($2,_," ");print _[1]}'
答案 1 :(得分:5)
你提供直接接口,从而减少一个grep。
ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{print $1}'
答案 2 :(得分:2)
基于this,您可以使用以下命令
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="my.package" >
...
<application android:name=".MainApplication">
...
</application>
</manifest>
答案 3 :(得分:1)
看这里在Beej指南为networking,以获得使用一个简单的C程序来打印出使用getaddrinfo(...)
呼叫的IP地址的套接字的列表。这个简单的C程序可以在shell脚本的一部分被用来刚刚打印出可用的IP地址stdout
这将是更容易做,然后依靠ifconfig
如果你想保持便携的ifconfig
的输出可能会有所不同。
希望这有帮助, 最好的祝福, 汤姆。
答案 4 :(得分:0)
ifconfig | grep&#39; broadcast \ | Bcast&#39; | awk -F&#39; &#39; {&#39;打印$ 2&#39;} |头-n 1 | sed -e&#39; s / addr:// g&#39;
答案 5 :(得分:0)
可能会有所帮助。
more /etc/hosts | grep `hostname` | awk '{print $1}'
答案 6 :(得分:0)
# for bash/linux
ipaddr(){
if="${1:-eth0}"
result=$(/sbin/ip -o -4 addr show dev "${if}" | sed 's/^.*inet // ; s/\/...*$//')
printf %s "${result}"
tty -s && printf "\n"
}