Скрипт:
#!/bin/bash
test1=""
test2=""
t_array=( "test1" "test2" )
index=$((${#t_array[@]}-1))
while [ $index -gt -1 ]
do
${t_array[index]}="1"
index=$(($index-1))
done
echo $test1 $test2
возвращает ошибку.
Как реализовать присвоение значений заранее заданным переменным?
Ответ
если запустить ваш скрипт, получаем ошибки в девятой строке (содержащей ${t_array[index]}="1"):
/tmp/s: line 9: test2=1: command not found
/tmp/s: line 9: test1=1: command not found
т.е. сформированная строка интерпретируется как буквальное выполнение строки test2=1 как команды. такой команды, конечно, нет, о чём интерпретатор и сообщает.
судя по содержимому скрипта, в этом месте необходимо интерпретировать эту строку, чтобы она воспринималась интерпретатором как присвоение значения переменной. это можно сделать, например, добавив команду eval перед выражением, формирующим строку:
eval ${t_array[index]}="1"
тогда скрипт вернёт строку
1 1
что, вероятно, и ожидается.
Комментариев нет:
Отправить комментарий