Vérifier si un répertoire existe et est accessible

Je veux vérifier si un répertoire existe et qu'il a des droits d'accès; si c'est le cas, effectuez les tâches. C'est le code que j'ai écrit, qui pourraient ne pas avoir la bonne syntaxe.

Pouvez-vous m'aider à la corriger?

dir_test=/data/abc/xyz
if (test -d $dir_test & test x $dir_test -eq 0);
 then
cd $dir_test
fi

Je crois que cela peut aussi être écrit comme ceci.

dir_test=/data/abc/xyz
test -d $dir_test
if [ $? -eq 0 ];
then
test x $dir_test
if [ $? -eq 0 ];
then
cd $dir_test
fi
fi

Comment peut-on écrire cela de manière plus efficace?

Parce que [ ... ] est synonyme de test cette classe comme un inutile l'utilisation de test 😉 Voir @chepner pour l'explication.
Plus d'exemples et d'explications ici: Comment vérifier si un répertoire existe dans un script shell

OriginalL'auteur Rahul sawant | 2014-03-24