#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 что, вероятно, и ожидается.
Комментариев нет:
Отправить комментарий