&&
não é suportado dentro de [...]
. Substitua:
if [ -f $infile && -r $infile ]
Com:
if [ -f "$infile" ] && [ -r "$infile" ]
Observe também que suas variáveis devem estar entre aspas duplas para evitar a divisão de palavras e a expansão do nome do caminho.
Aparte
Para melhor compatibilidade, substitua:
function vfile(){
com
vfile(){
Este novo formulário funcionará em todos os shells do POSIX. A palavra-chave function
é específica do bash e não adiciona valor.