verificar se string representa caminho válido em BASH [duplicado]

1

Atualmente, tenho um diretório em uma string, como tal:      DESTDIR="/var/files/mydir/filedir/"

Observe que esse diretório existe. Eu me certifiquei disso.

Preciso verificar se esse diretório já existe ou se preciso criá-lo. Atualmente estou fazendo isso usando:

if [ -d  $DESTDIR ]; then
    echo the directory exists!
else
    echo the directory does not exist!
fi

e, mesmo que o diretório exista - eu copiei e colei o nome na variável no meu script - ele sempre vai para a instrução else . Não só isso, mas quando eu faço ls $DESTDIR dentro do script, recebo um erro no such file or directory . No entanto, quando executo ls $DESTDIR da linha de comando, obtenho o resultado esperado.

Eu tentei substituir $DESTDIR por "$DESTDIR" , mas ainda não obtive o resultado esperado.

    
por farid99 09.07.2015 / 17:23

2 respostas

4

Você pode fazer apenas mkdir -p "$DESTDIR" - a opção -p suprimirá erros se já existir.

    
por 09.07.2015 / 18:56
0

Parece daqui que $DESTDIR (também conhecido como / var / files / mydir / file) é na verdade um / file / em vez de um / directory /. O teste -d pergunta se você tem um diretório / /. Verifique a saída de ls -ld $DESTDIR para confirmar. Se $DESTDIR for realmente um arquivo, então o teste -d está fazendo a coisa certa - não exatamente o que você esperava.

    
por 09.07.2015 / 17:31