#linux #bash
Скрипт:
#!/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
возвращает ошибку.
Как реализовать присвоение значений заранее заданным переменным?
Ответы
Ответ 1
если запустить ваш скрипт, получаем ошибки в девятой строке (содержащей ${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 что, вероятно, и ожидается.
Комментариев нет:
Отправить комментарий