Если вывод sqlplus
в буквальном смысле "Список целых чисел", как вы описываете, то это достаточно просто.
SOMETHING=5
while -r read n ; do
if [ $n -ge $SOMETHING ] ; then
break
fi
sqlplus foo/bar @test2.sql "$n"
printf '%.2f%%\n' $(expr "$n" \* 100 / "$SOMETHING")
done < <(sqlplus foo/bar @test.sql)
Предполагая, что "Список целых чисел" действительно означает "Новая строкаразделенный список целых чисел "
Мне не ясно, что должны представлять $testvar.x
и testvar.size
, поэтому я сделал несколько предположений и оставил переменную $SOMETHING
, чтобы заменить то, что testvar.size являетсядолжно быть.Если вы хотите, чтобы общее число целых чисел в списке составляло sqlplus
, тогда оно было бы другим и делалось бы так:
intlist=($(sqlplus foo/bar @test.sql))
for n in "${intlist[@]}"; do
if [ $n -ge ${#intlist[@]} ] ; then
break
fi
sqlplus foo/bar @test2.sql "$n"
printf '%.2f%%\n' $(expr "$n" \* 100 / ${#intlist[@]})
done < <(sqlplus foo/bar @test.sql)
Если ваш вывод более сложный, потребуется выполнить дополнительную фильтрациюпередний.