Отправляет email-рассылки с помощью сервиса Sendsay

За 2009-06-10

Re: Вопрос по оболочке: обращение к массиву по имени значения переменной.

В Wed, 10 Jun 2009 18:10:16 +0700
Strong and Humble <strong.humb***@g*****.com> пишет:

> Спасибо за Ваш ответ, Геннадий Владимирович:
>
> > > Т.е.: есть массивы a, b, c
> > > есть переменная $1, имеющая значение, b.
> > > мне н/о обратиться к $1[$i] - в данном случае, это будет ${b[$i]}.
> >
> > eval echo \${$1[$i]}
>
> - То, что нужно, только не могу понять: как выдаваемое значение использовать,
> например, в конструкции if т.е. что-то типа:
>
> [ $(eval echo \${$1[$i]}) ] && echo '1' || echo '0'
>
> ?
Ну например так:
eval x=\${$1[$i]}
if [ "$x" == "<знач>" ] ; then
<что-то>
fi

>
> Почитал док-цию по eval - мало что понял применительно к моему случаю...
>

Всё просто для аргументлв после eval оболочка выполняет все подстановки (слеш
перед первым $ как раз и нужен чтоб оболочка восприняла его просто как символ)
и
результат передаётся eval которая полученную строку снова выполняет в оболочке
и
возвращает результат выполнения команды. То есть на первом проходе $1 меняктся
на
имя массива, а $i на индекс и получившаяся команда присваивания
переменной значения элемента массива передаётся eval которая и выполнит команду
в оболочке. Как результат в переменной значение элемента ну дальше можно и if
использовать.
> -*-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 36153; Возраст листа: 2147; Участников: 1382
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/871306

Re: Вопрос по оболочке: обращение к массиву по имени значения переменной.

10 июня 2009 г. 17:10 пользователь Константин Поветкин <povetkin***@g*****.com
> написал:

> Может:
> if [ -z [ $(eval echo \${$1[$i]}) ] && echo '1' || echo '0' ]; then
> echo 0
> else
> echo 1
> fi

Что это? Работать не будет - вы перестарались с проверками

10 июня 2009 г. 14:10 пользователь Strong and Humble <
> strong.humb***@g*****.com> написал:
>
> > Спасибо за Ваш ответ, Геннадий Владимирович:
> >
> > > > Т.е.: есть массивы a, b, c
> > > > есть переменная $1, имеющая значение, b.
> > > > мне н/о обратиться к $1[$i] - в данном случае, это будет ${b[$i]}.
> > >
> > > eval echo \${$1[$i]}
> >
> > - То, что нужно, только не могу понять: как выдаваемое значение
> > использовать,
> > например, в конструкции if т.е. что-то типа:
> >
> > [ $(eval echo \${$1[$i]}) ] && echo '1' || echo '0'
> >
> > ?
> >
> > Почитал док-цию по eval - мало что понял применительно к моему случаю...

Как раз для вас - самому себе строку вывести и ещё раз разобрать и
исполнить

Только если вам нужно подобное - есть для этого perl и python (lua для
аскетов). Да - в них нужно разбираться. Зато результат этого стоит

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 36152; Возраст листа: 2147; Участников: 1382
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/871237

   2009-06-10 18:23:29 (#871237)

Re: Вопрос по оболочке: обращение к массиву по имени значения переменной.

Может:
if [ -z [ $(eval echo \${$1[$i]}) ] && echo '1' || echo '0' ]; then
echo 0
else
echo 1
fi

10 июня 2009 г. 14:10 пользователь Strong and Humble <
strong.humb***@g*****.com> написал:

> Спасибо за Ваш ответ, Геннадий Владимирович:
>
> > > Т.е.: есть массивы a, b, c
> > > есть переменная $1, имеющая значение, b.
> > > мне н/о обратиться к $1[$i] - в данном случае, это будет ${b[$i]}.
> >
> > eval echo \${$1[$i]}
>
> - То, что нужно, только не могу понять: как выдаваемое значение
> использовать,
> например, в конструкции if т.е. что-то типа:
>
> [ $(eval echo \${$1[$i]}) ] && echo '1' || echo '0'
>
> ?
>
> Почитал док-цию по eval - мало что понял применительно к моему случаю...
>
>

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 36151; Возраст листа: 2147; Участников: 1382
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/871218

   2009-06-10 17:19:10 (#871218)

Re: Вопрос по оболочке: обращение к массиву по имени значения переменной.

Спасибо за Ваш ответ, Геннадий Владимирович:

> > Т.е.: есть массивы a, b, c
> > есть переменная $1, имеющая значение, b.
> > мне н/о обратиться к $1[$i] - в данном случае, это будет ${b[$i]}.
>
> eval echo \${$1[$i]}

- То, что нужно, только не могу понять: как выдаваемое значение использовать,
например, в конструкции if т.е. что-то типа:

[ $(eval echo \${$1[$i]}) ] && echo '1' || echo '0'

?

Почитал док-цию по eval - мало что понял применительно к моему случаю...

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 36150; Возраст листа: 2147; Участников: 1382
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/871185

   Strong and Humble 2009-06-10 15:58:20 (#871185)