Похоже, вы ожидаете, что $var_i_$i
расширится до значения $var_i_1
, $var_i_2
и т. д. -, к сожалению, этого не происходит. Для иллюстрации предположим, что мы установили
$ var_i_1=23; var_i_2=45; var_i_3=67
, затем
$ for i in $(seq 1 3); do awk -v v_i="$var_i_$i" 'BEGIN{print v_i}'; done
1
2
3
Здесь происходит следующее: оболочка анализирует $var_i_$i
как $var_i_
, объединенную с$i
. Поскольку $var_i_
, скорее всего, не установлен/пуст, v_i
и v_f
просто наследуют значение индекса цикла i
.
Существуют уродливые способы выполнения той косвенности, которую вы хотите, например.
$ for i in $(seq 1 3); do awk -v v_i="$(eval echo \${var_i_$i})" 'BEGIN{print v_i}'; done
23
45
67
однако, поскольку bash поддерживает массивы, более чистым решением было бы использовать массивы для ваших значений var_i
и var_f
, например.
$ var_i=(23 45 67)
затем (вспоминая, что массивы нулевые -индексированные)
$ for i in $(seq 0 2); do awk -v v_i="${var_i[i]}" 'BEGIN{print v_i}'; done
23
45
67
Я тоже новичок (не могу комментировать )но пробовали ли вы команду dd (вот ссылка )SD-карта? может через виртуальный линукс, если на винде работаешь?