Você pode usar o seguinte para verificar a existência de um diretório:
if [[ -d "$1" ]]; then
Se você quiser verificar qualquer arquivo que usaria
if [[ -e "$1" || -L "$1" ]]; then
Se você quiser verificar se um arquivo é um arquivo regular (ou um link simbólico para um arquivo normal), mas NÃO um diretório (ou um dispositivo, um soquete, um pipe nomeado ...), então você pode usar:
if [[ -f "$1" ]]; then
Se o arquivo puder existir, mas você quiser ter certeza de que não é o tamanho zero:
if [[ -s "$1" ]] then;
Todos esses testes são baseados no resultado da chamada do sistema stat() (exceto para -L que depende de lstat() ). Se você não tiver permissão para fazer tal chamada no arquivo (por exemplo, porque você não tem acesso de pesquisa ao diretório em que o arquivo está ou a diretórios envolvidos na resolução do arquivo para links simbólicos), então os testes retornarão silenciosamente como se os arquivos não existissem.
[[ ... ]] é um operador ksh , também suportado por bash e zsh . O equivalente padrão (para usar em sh ) é com o comando [ (para o segundo exemplo acima, use [ -e "$1" ] || [ -L "$1" ] ).