Скрипт для открытия vlc с локальным ip и портом

Я пытаюсь создать скрипт для открытия 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/

Хммм ...

Почему в моей переменной есть пробел и как его удалить? Кто-нибудь знает лучший способ сделать это?

0
задан 13 May 2014 в 20:34

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/"
0
ответ дан 13 May 2014 в 20:34

Другие вопросы по тегам:

Похожие вопросы: