Seu código original não funcionou porque você tem que capturar todo o loop while na variável ans
.
Experimente o seguinte snippet:
#!/bin/bash
INPUT=data.csv
OLDIFS=$IFS
IFS=";"
ans=$(while read IP hostname subnetmask gateway
do
echo -e "$IP"
done <$INPUT|zenity --list --text "Choose witch IP-address you want to connect to " --column "Choose")
echo "You chose: $ans"