[ -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