Проблема переменной сценария оболочки - PullRequest
2 голосов
/ 05 мая 2010

Я пытаюсь написать сценарий оболочки, чтобы автоматизировать работу для меня. Но я сейчас застрял. Вот проблема:

У меня есть переменная с именем var1 (уменьшающееся число от 25 до 0 и другая переменная с именем var $ {var1}, и это равно некоторой строке. затем, когда я пытаюсь вызвать var $ {var1} в любом месте скрипта через echo, это не удается. Я пробовал $ [var $ var1], $ {var $ var} и многие другие, но каждый раз, когда он терпит неудачу и дает значение var1 или говорит об ожидаемой ошибке операнда. Спасибо за вашу помощь

Ответы [ 3 ]

2 голосов
/ 05 мая 2010

Вероятно, лучше использовать массив, но вы можете использовать косвенное обращение:

var25="some string"
var1=25
indirect_var="var$var1"
echo ${!indirect_var}    # echoes "some string"
1 голос
/ 05 мая 2010

Существует только один раунд расширения переменной, поэтому вы не можете сделать это напрямую. Вы можете использовать eval:

eval echo \${var$var1}

Лучшее решение - использовать массив:

i=5
var[$i]='foo'
echo ${var[$i]}
0 голосов
/ 05 мая 2010

Похоже, вам нужна косвенная переменная bash. Взгляните на ссылку ниже.

http://mywiki.wooledge.org/BashFAQ/006

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...