2010-05-30 7 views
5

J'essaye de créer un script pour détecter si un répertoire existe, et si ce n'est pas le cas, pour le créer.Script shell pour tester si un répertoire existe et sinon le créer?

Comment puis-je faire cela?

je fait quelques recherches et a trouvé un indice:

test -d directory 

... retournera true ou false selon que le répertoire existe ou non.

Mais comment lier ceci avec mkdir?

+0

Pourquoi tester des tests? Faites juste "mkdir foo 2>/dev/null". Si le répertoire existe, mkdir échouera et aucun mal ne sera fait. –

Répondre

9

mkdir -p $directory devrait faire ce que vous voulez. L'option -p créera les répertoires parents nécessaires. Si $directory existe déjà en tant que répertoire, la commande ne fait rien et réussit. Si $directory est un fichier normal, il restera intact, et la commande échouera avec un message d'erreur approprié.

Sans l'option -p à mkdir, la stratégie test ... || mkdir ... peut échouer si $directory contient un «/», et une composante de ce chemin n'existe pas déjà. Le test est superflu de toute façon, puisque mkdir fait le même test en interne.

3
test ... || mkdir ... 
+0

Ah ... Juste parfait! –

Questions connexes