mysql
parece gerar os resultados para uma variável shell em uma única linha. Uma maneira de contornar isso é gravar o conteúdo em um arquivo temporário e processá-lo em um loop while.
EDITAR No meu sistema, o IFS="\ n" antes do comando mysql (quando os resultados são atribuídos a uma variável shell) fornece a saída correta de várias linhas. por exemplo.
IFS="\n"
Total_results=$(mysql.....)
=============== Fim do processo de edição ==========================
#!/bin/bash
mysql --silent -h server-name -P 3306 -u username-ppassword -D dbname<<<"select URL from Experiment where URL_Exists = 1" > tmp_results
while read URL
do
echo $URL
var=$(curl -s --head $URL | head -n 1 | grep "HTTP/1.[01] [23]..")
echo "$var"
if [ -z "$var" ]
then
echo "Ok we do not have a valid link and the value needs to be updated as -1 here"
else
echo "we will update the value as 1 from here"
fi
done < tmp_results