${!имя} обращается к переменной, имя которой находится в указанной переменной.
${!!имя} обращается к переменной, имя которой находится в переменной, имя которой находится в указанной переменной.
И так далее.
Судя по наличии $(()) в коде, это всё-таки /bin/bash, а не /bin/sh. Тогда почему бы не использовать массивы самого bash’а?
Нет, это именно /bin/sh, и все скрипты я пытаюсь писать именно в Bourne Shell . Дело в том, что во FreeBSD по дефолту баша нет. А чтоб его поставить, нужно время... к тому же он за собой еще несколько зависимо тянет...
Внутри $(()), Bourne Shell ожидает увидеть арифметическую операцию.
${!имя} обращается к переменной, имя которой находится в указанной переменной.
${!!имя} обращается к переменной, имя которой находится в переменной, имя которой находится в указанной переменной.
И так далее.
Спасибо огромное за подсказку, но боюсь я вас не понял... перепробовал все возможные варианты с этими знаками восклицания и в ответ получаю: Bad substitution. Можете, пожалуйста, навести пример в случае с "${PATH_WEBSITE_ROOT_${i}}" ?
${!имя} обращается к переменной, имя которой находится в указанной переменной.
${!!имя} обращается к переменной, имя которой находится в переменной, имя которой находится в указанной переменной.
И так далее.
ээ.. если я не ошибаюсь, больше одного '!' в баше никогда нельзя было использовать (или я так сильно отстал от жизни?).
Спасибо огромное за подсказку, но боюсь я вас не понял... перепробовал все возможные варианты с этими знаками восклицания и в ответ получаю: Bad substitution. Можете, пожалуйста, навести пример в случае с "${PATH_WEBSITE_ROOT_${i}}" ?
В вашем случае, вообще нету "косвенной ссылки". Как вам уже сказал /dev/random, чтобы использовать '!', в исходной переменной должно содержаться _имя_ другой переменной. Т.е в вашем случае, попробуйте так
Чтобы сделать произвольный уровень "разыменования" (косвенных ссылок) или если вы не хотите использовать другую переменную, как в примере выше, можно использовать eval.