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
?
There are 6 types of valid relational operators in shell scripting − == operator is the operator that equates the values of two operators. It returns true if the values are equal and returns false otherwise. != operator is the operator that equates the values of two operators and check for their inequality.
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.
test ... || mkdir ...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With