Para ser seguro, você tem que olhar para o gerado, se o código pode ser injetado.
Neste comando mysql -B -ss -uuser -ppassword -e "USE table; SELECT column FROM table WHERE pid='$i';"
, você sabe que eu sou um número entre 1 e 5, então tudo bem.
Mas nesse comando mysql -B -ss -uuser -ppassword -e "USE table; UPDATE table SET column = '${line:6}' WHERE pid = '$i';"
, você não pode ter certeza de $ {line: 6}; você pode imaginar que ele contém uma aspa simples, neste caso você tem que substituir por duas aspas simples, você também pode verificar se o comprimento é menor que o comprimento da coluna no banco de dados (suponha aqui 255) ou truncar os dados antes de substituir citações.
#!/bin/bash
for (( i=1; i <= 5; i++))
do
DBQUERY='mysql -B -ss -uuser -ppassword -e "USE table; SELECT column FROM table WHERE pid='$i';"'
if [[ $DBQUERY == *.pls ]] ;
then
wget -O tempfile.pls $DBQUERY
while read line
do
if [[ $line == File1=* ]] ;
then
str=${line:6:255}
str=${str//\'/''}
mysql -B -ss -uuser -ppassword -e "USE table; UPDATE table SET column = '$str' WHERE pid = '$i';"
fi
done <tempfile.pls
fi
done