[ -f $num3 ]
Não faz sentido aplicar o operador split + glob ao conteúdo de $num3 .
[ -f "$num3" ]
Verificaria se o $num3 path (absoluto se inicia com / , relativo ao diretório de trabalho atual, caso contrário) resolve para um arquivo que é do tipo regular ou um symlink para um arquivo normal.
Se você quiser verificar se $num3 relativo a um determinado diretório é um arquivo normal, use:
dir=/some/dir
[ -f "$dir/$sum3" ]
Você pode querer verificar de antemão que $sum3 não começa com / ou não contém / .
Observe que, se $dir for / , essa abordagem não funcionará em sistemas que tratam //foo/bar caminhos especialmente . Então você pode querer tratar o caso dir=/ especialmente.
case $dir in
/) file=$dir$num3
*) file=$dir/$num3
esac
[ -f "$file" ]
Para verificar se $num3 é um caminho relativo (para um arquivo regular ) de qualquer diretório na árvore de diretórios com raiz no diretório atual, seria melhor usar zsh :
files=(**/$num3(DN-.))
if (($#files > 0)); then
echo "Success: $#files such file(s) found"
else
echo Failure
fi