O motivo pelo qual isso não funciona da maneira como você escreveu é que awk interpretará $i como "o i th field" e, como a awk variable i não tem valor, você receberá um erro ou, se você estiver usando o GNU awk ou mawk , $i será o mesmo que $0 , que é a linha inteira (com mawk ou GNU awk , o programa parece para linhas cuja primeira coluna é igual à linha inteira).
Em vez disso, para "importar" a variável shell para awk :
awk -v i="$i" '$1 == i { sum += $4 } END { print sum }' test2.txt
Além disso, o valor da variável de shell $i sempre será o nome do arquivo test1.txt (já que é isso que você faz o loop).
Para percorrer o conteúdo do arquivo:
while IFS= read -r i; do
awk ...as above...
done <test1.txt
A resposta da αғsнιη mostra como você pode fazer isso sem usar um loop de shell.