Как печатать значения переменных с добавочными числами, используя цикл в сценарии оболочки?

У меня есть сценарий Bash, где я вычислил множество значений и сохранил их в переменных, у которых есть число для каждой строки. Например, у меня есть переменная с именем TC_5 которая вычисляет значение 5-й строки входного файла csv. Я вычислил все значения и сохранил в переменных, которые имеют соглашение об именах TC_<Row_No> так что для 200 строк у меня есть значения, хранящиеся в:

 TC_1 TC_2 . . TC_200 

Теперь я хочу написать цикл, который может печатать значения всех этих переменных вместе с внешним файлом вместо ручной печати. Для этого я использую цикл while следующим образом:

 i=0 while [ "$i" != 201 ] do echo "TC_$i" >> Out i=`expr $i + 1` done 

Как я могу изменить приведенный выше код таким образом, чтобы оператор echo печатал переменную TC_<RowNo> в Out File?

Ваш текущий скрипт застрял в инфинитивном цикле, потому что условие [ "$i" != 201 ] всегда было истинным.

Вы должны увеличить $i после каждой итерации и использовать eval для печати содержимого переменной TC_<RowNo> (но это небезопасно ):

 i=1 while [ "$i" -ne 201 ] do eval printf '%s\\n' "\${TC_$i}" i=$((i+1)) done >> "Out" 

Обратите внимание, что $i начинается с 1 , использование -ne для целочисленного сравнения и перенаправления в конце цикла while.