Você está tentando passar $counter
para o script awk, portanto, é necessário usar aspas duplas em vez de aspas simples. Aspas simples são para strings literais, aspas duplas são para strings com variáveis nelas.
Como você usa aspas duplas aqui, isso significa que você precisa escapar $2
as \
no script awk para que o shell não substitua seu segundo argumento (se houver algum, string vazia) o script awk.
value=$(awk -F, "NR==$counter{print \;exit}" ./../COP1A_report1
Você também deve citar outras variáveis quando usá-las. por exemplo. awk ... > "TESTING$counter"
- a falta de aspas era inofensiva nesse caso, mas sempre citar suas variáveis é um bom hábito para entrar.
Mesmo para counter=$(echo "$counter"+1 |bc)
- não citar é inofensivo aqui, mas ainda é uma prática ruim.
Por fim, você está perdendo o comando -v
do comando awk
quando define v="$value"
. deve ser -v v="$value"
counter=1
RES=($(./../getenergies.R))
for pdbnames in "${RES[@]}"
do
value=$(awk -F, "NR==$counter{print \;exit}" ./../COP1A_report1)
awk -v v="$value" '{$11 = v} 1' "$pdbnames" > "TESTING$counter"
counter=$(echo "$counter"+1 |bc)
printf "$value $pdbnames\n"
done