#!/bin/bash if [!-d /home/mlzboy/b2c2/shared/db]; then mkdir -p /home/mlzboy/b2c2/shared/db; fi; This doesn't seem to work. Can anyone help?
27 Answers
First, in Bash [ is just a command, which expects string ] as a last argument, so the whitespace before the closing bracket (as well as between ! and -d which need to be two separate arguments too) is important:
if [ ! -d /home/mlzboy/b2c2/shared/db ]; then mkdir -p /home/mlzboy/b2c2/shared/db; fi Second, since you are using -p switch for mkdir, this check is useless, because this is what it does in the first place. Just write:
mkdir -p /home/mlzboy/b2c2/shared/db; and that's it.
6There is actually no need to check whether it exists or not. Since you already wants to create it if it exists , just mkdir will do
mkdir -p /home/mlzboy/b2c2/shared/db 1Simply do:
mkdir /path/to/your/potentially/existing/folder mkdir will throw an error if the folder already exists. To ignore the errors write:
mkdir -p /path/to/your/potentially/existing/folder No need to do any checking or anything like that.
For reference:
-p, --parents no error if existing, make parent directories as needed
You need spaces inside the [ and ] brackets:
#!/bin/bash if [ ! -d /home/mlzboy/b2c2/shared/db ] then mkdir -p /home/mlzboy/b2c2/shared/db fi Cleaner way, exploit shortcut evaluation of shell logical operators. Right side of the operator is executed only if left side is true.
[ ! -d /home/mlzboy/b2c2/shared/db ] && mkdir -p /home/mlzboy/b2c2/shared/db 3I think you should re-format your code a bit:
#!/bin/bash if [ ! -d /home/mlzboy/b2c2/shared/db ]; then mkdir -p /home/mlzboy/b2c2/shared/db; fi; 0Create your directory wherever
OUTPUT_DIR=whatever
if [ ! -d ${OUTPUT_DIR} ] then mkdir -p ${OUTPUT_DIR} fi