views:

170

answers:

2

I am trying to create a script to detect whether a directory exists, and if it does not, to create it.

How can I do that?

I did some digging and found a clue:

test -d directory

...will return true or false depending on whether the directory exists or not.

But how do I tie this together with mkdir?

+3  A: 
test ... || mkdir ...
Ignacio Vazquez-Abrams
Ah... Just perfect!
George Edison
+6  A: 

mkdir -p $directory should do what you want. The -p option will create any necessary parent directories. If $directory already exists as a directory, the command does nothing, and succeeds. If $directory is a regular file, it will remain untouched, and the command will fail with an appropriate error message.

Without the -p option to mkdir, the test ... || mkdir ... strategy can fail if $directory contains a '/', and some component of that path doesn't already exist. The test is superfluous anyway, since mkdir does the same test internally.

Jim Lewis