Os valores de saída de sua experiência estão corretos. Quando o utilitário test avaliar uma expressão, se a expressão for avaliada como verdadeira, test retornará um status de saída zero (true) ; caso contrário, retorna 1 (false) .
Assim, no seu exemplo, test -L ../Dependencies retorna 0 (verdadeiro) porque ../Dependencies é um link simbólico. Se ../Dependencies não fosse um link simbólico, test retornaria 1 (false).
A instrução if do script de shell está correta, mas você pode adicionar comandos echo para ver se há outros problemas quando o script de shell é executado. Por exemplo, você pode adicionar dois comandos echo antes da instrução if :
echo "path is '$PWD'"
echo "out_dir is '$out_dir'"