Распарсить MAC-адрес

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

IMB
Сообщения: 2567
ОС: Debian

Распарсить MAC-адрес

Сообщение IMB »

Доброго дня!
Необходимо распарсить MAC-адрес с присвоением каждой части отдельной переменной, работа ведётся в Busybox, так что фукционал ограничен.

user

# echo $num 00:01:02:03:04:0d # for i in `seq 1 1 6`; do echo $num | awk -F: "{print \$$i}"; done 00 01 02 03 04 0d # for i in `seq 1 1 6`; do n$i=`echo \$num | awk -F: "{print \\$$i}"`; done -sh: n1=00: not found -sh: n2=01: not found -sh: n3=02: not found -sh: n4=03: not found -sh: n5=04: not found -sh: n6=0d: not found # echo $n6


Я не понимаю, почему не срабатывает конструкция с присвоением значений, подскажите?
Спасибо.
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Распарсить MAC-адрес

Сообщение watashiwa_daredeska »

Потому что нельзя таким образом делать косвенное обращение к переменным (в данном случае, n$i).
for i in $(seq 1 1 6); do eval $(echo "n$i=$(echo $num | awk -F: "{print \$$i}")"); done
Спасибо сказали:
Аватара пользователя
Rootlexx
Бывший модератор
Сообщения: 4462
Статус: GNU generation
ОС: Debian GNU/Linux

Re: Распарсить MAC-адрес

Сообщение Rootlexx »

Можно поступить проще:

Код: Выделить всё

IFS=":";
declare -a n=($num);
unset IFS;
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Распарсить MAC-адрес

Сообщение watashiwa_daredeska »

Rootlexx писал(а):
22.10.2010 16:24
Можно поступить проще:
busybox.
sh: syntax error: unexpected "("
Спасибо сказали:
Аватара пользователя
Rootlexx
Бывший модератор
Сообщения: 4462
Статус: GNU generation
ОС: Debian GNU/Linux

Re: Распарсить MAC-адрес

Сообщение Rootlexx »

watashiwa_daredeska писал(а):
22.10.2010 19:07
Rootlexx писал(а):
22.10.2010 16:24
Можно поступить проще:
busybox.
sh: syntax error: unexpected "("


Это была идея, а не готовый вариант.
Для BusyBox:

Код: Выделить всё

MAC="00:01:02:03:04:0d";
IFS=":";
set -- $MAC;
unset IFS;
Спасибо сказали: