Предполагается, что предоставляется индексная карта, которая отображает индекс столбца с заданным множителем, например,
1 -> 2
2 -> 4
3 -> 7
попробуйте использовать этот скрипт или следующий «однострочный» (возможно, не самый элегантный код):
#!/bin/bash
INPUT="value=12 value2=5 value3=2"
m=(2 4 7)
IFS=' ' read -ra IN <<< "$INPUT"
for ((i=0; i<${#IN[@]}; ++i)); do
tmp=${IN[$i]}
sum=$((sum + $(awk -F '=' -v m="${m[$i]}" '{print m*$2}' <<< ${tmp##value})))
done
echo $sum
"Однострочник":
awk -F ' ' 'BEGIN {m[1]=2; m[2]=4; m[3]=7;} {for (i=1; i <= NF; i++) {split($(i),a,"="); sum+=m[i] * a[2];}} END { print sum; } ' <<< "value=12 value2=5 value3=2"
Предполагается, что в первом столбце есть множитель 2, если не указан, и затем по возрастанию num+1
на основе числа num
слева от знака уравнения, здесь быстрое решение:
INPUT="value=12 value2=5 value3=2"
IFS=' ' read -ra IN <<< "$INPUT"
sum=0
for i in "${IN[@]}"; do
sum=$((sum + $(awk -F '=' '{print (!$1 ? 2 : $1+1) * $2}' <<< ${i##value})))
done
echo $sum