пожалуйста, посмотрите на следующие команды вниз (оболочка sh )

что-то непонятно для меня

когда я запускаю - eval echo \$ arr $ n , я получаю значение a, как и ожидалось

так почему: VAL = eval echo \$arr$n , а echo $ VAL не печатает одно и то же значение a ?

установить значение в arr1

# n=1
# eval arr$n=a

вывести значение из arr1

# n=1
# eval echo \$arr$n
  a

установите для eval echo \$ arr $ n значение VAL и выведите $ VAL

# VAL=` eval echo \$arr$n `
# echo $VAL
{*}1

что нужно исправить в команде - VAL = eval echo \$arr$n , поэтому, когда я сделаю echo $ VAL, я получу значение a ?

1 ответ1

1

попробуйте использовать $() вместо обратных кавычек:

VAL=$(eval echo \$arr$n)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .