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