Ваш eth0, кажется, не имеет никакого IP-адреса. Ваш новый модем должен иметь сервер DHCP. Включите его (это уже должно быть), и установите свою плату Ethernet для использования DHCP. Администратор сети в Debian базировался, установки игнорируют карты, если они настроены с помощью /etc/network/interfaces
, таким образом, можно использовать любой метод, Вам нравится.
В тире каждая команда в трубопроводах выполняется в подсхеме (zsh
и AT&T ksh
, самая правая команда в трубопроводах не), поэтому переменных X
и Y
больше не существует, когда ваша команда выполнена.
Просто используйте Расширение параметров, попробуйте:
$ set -- foo:123
$ X=${1%:*}
$ Y=${1#*:}
Пример используется для интерактивной сессии.
Внутри Вашего скрипта Вам не нужен набор -- foo:123
.
Вы также можете использовать оператор split + glob (оставьте переменную без кавычек) (и который вы использовали без видимой причины в своем вопросе):
IFS=: # configure the split part to use : as the delimiter
set -f # disable the glob part
set -- $1 # $1 is split on : and parts are stored in $1, $2...
X=$1 Y=$2
Вы также можете сделать:
printf '%s\n' "$1" | {
IFS=: read -r X Y
printf '%s\n' "$X"
}
В dash
, как bash
(но в отличие от AT&T ksh
или zsh
), все части конвейера выполняются в подоболочках (они должны выполняться в разных в любом случае, поскольку они выполняются одновременно). Выше нам нужна часть, которая использует этот $ X
, чтобы находиться в той подоболочке, которая считывает вывод printf
и устанавливает $ X
.
Обратите внимание, что эти два решения ведут себя по-разному, если $ 1
содержит символ новой строки или более одного символа :
.