Em ambos os seus scripts, você usa cut em um arquivo cujo nome é lido no arquivo viagens.txt . Você deve obter um erro No such file or directory dos dois scripts (lembre-se de incluir sempre erros na pergunta).
Em vez disso:
#!/bin/bash
fich=viagens.txt
if [ ! -f "$fich" ]; then
echo "Ficheiro nao existe" >&2
exit 1
fi
cut -d : -f 2 <"$fich" |
while read data; do
printf 'Data read: %s\n' "$data"
done
O cut -d : -f 2 retornará o segundo campo : -delimited da entrada para cut .
Ou, se você quiser apenas enviar a coluna:
#!/bin/bash
fich=viagens.txt
if [ ! -f "$fich" ]; then
echo "Ficheiro nao existe" >&2
exit 1
fi
cut -d : -f 2 <"$fich"