How to use Bash to create a folder if it doesn't already exist?

前端 未结 6 1311
暖寄归人
暖寄归人 2020-12-02 06:43
#!/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?<

相关标签:
6条回答
  • 2020-12-02 07:00

    There 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
    
    0 讨论(0)
  • 2020-12-02 07:10

    I 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;
    
    0 讨论(0)
  • 2020-12-02 07:14

    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
    
    0 讨论(0)
  • 2020-12-02 07:19

    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
    
    0 讨论(0)
  • 2020-12-02 07:21

    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 to mkdir, this check is useless, because this is what does in the first place. Just write:

    mkdir -p /home/mlzboy/b2c2/shared/db;
    

    and thats it.

    0 讨论(0)
  • 2020-12-02 07:25

    Simply 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 http://man7.org/linux/man-pages/man1/mkdir.1.html

    0 讨论(0)
提交回复
热议问题