LINUX.ORG.RU

подстановка переменной в имя другой в shell


0

0

a1=123 #echo a1 -> 123
i=1 #echo i -> 1
#echo $((a$i)) -> 123

если значение переменной a1 - число (хотя это шелом и рассматривается все равно как строка), то подобная подстановка работет...

как только меняем значение a1=test, тут же все "ломается":
#echo $((a$i)) -> 0 (сейчас не могу проверить, но, кажется, либо 0, либо пусто)

если a1=/test, то возникает следующее недоразумение...

как же мне получить $((a$i)), если у меня a1="/dir"?

anonymous

rock@tower:~$ A1=test; A2=5
rock@tower:~$ B=1; C="A$B"
rock@tower:~$ echo ${!C}
test
rock@tower:~$ B=2; C="A$B"
rock@tower:~$ echo ${!C}
5
rock@tower:~$ echo $((${!C}+1))
6

Курить man bash на предмет Parameter Expansion.

Rock
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.