Я пытаюсь создать скрипт для открытия vlc с моим локальным ip и портом 8888. Мой текущий скрипт:
#!/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/
Хммм ...
Почему в моей переменной есть пробел и как его удалить? Кто-нибудь знает лучший способ сделать это?
Поскольку 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/"