我正在尝试创建一个脚本来使用我的本地 IP 和端口 8888 打开 vlc。我当前的脚本:
#!/bin/bash
vlc http://10.0.0.1:8888/
这很好用,但是当我转到另一个网络时,本地 IP 变为 10.0.0.64,脚本就没用了。我设法使用以下命令找到我的新本地 IP:
hostname -I
新脚本:
#!/bin/bash
a="http://"
b=":8888/"
ip="$(hostname -I)"
final=${a}${ip}${b}
vlc $final
但这不起作用。
echo $final
http://10.0.0.0.1 :8888/
嗯……
为什么我的变量中有一个空格?我该如何删除它?有谁知道更好的方法吗?
答案1
因为hostname -i
列出了主机的所有 IP 地址,所以可以有多个。IP 地址之间用空格分隔。该函数有点“偷懒”,在每个 IP 地址后面都加了一个空格,即使只有一个。
您可以删除末尾的空格,但如果您的主机有多个 IP 地址,此脚本仍然会失败。
最好使用它(如解释的那样这里):
/sbin/ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'
您应该eth0
用您想要的 IP 地址的接口来替换。
因此你的脚本变成了(如你所见,我也把它弄短了一点):
#!/bin/bash
IP=`/sbin/ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'`
vlc "http://${IP}:8888/"