Как использовать Bash для создания папки, если она еще не существует?

#!/bin/bash
if [!-d /home/mlzboy/b2c2/shared/db]; then
    mkdir -p /home/mlzboy/b2c2/shared/db;
fi;

Это не работает. Может ли кто-нибудь помочь?

Ответ 1

Во-первых, в bash "[" - это просто команда, которая ожидает строку "]" в качестве последнего аргумента, поэтому пробелы перед закрывающей скобкой (а также между "!" и "-d", которые необходимы для двух отдельных аргументов) важно:

if [ ! -d /home/mlzboy/b2c2/shared/db ]; then
  mkdir -p /home/mlzboy/b2c2/shared/db;
fi

Во-вторых, поскольку вы используете -p переключиться на mkdir, эта проверка бесполезна, потому что это то, что делает в первую очередь. Просто напишите:

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

и т.д.

Ответ 2

На самом деле нет необходимости проверять, существует ли это или нет. Поскольку вы уже хотите создать его, если он существует, просто mkdir будет делать

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

Ответ 3

Просто выполните:

mkdir /path/to/your/potentially/existing/folder

mkdir выдает ошибку, если папка allready существует. Чтобы игнорировать ошибки, напишите:

mkdir -p /path/to/your/potentially/existing/folder

Нет необходимости делать какие-либо проверки или что-то в этом роде.

Ответ 4

Вам нужны пробелы внутри скобок [ и ]:

#!/bin/bash
if [ ! -d /home/mlzboy/b2c2/shared/db ] 
then
    mkdir -p /home/mlzboy/b2c2/shared/db
fi

Ответ 5

Более чистый способ, использовать краткую оценку логических операторов оболочки. Правая сторона оператора выполняется только в том случае, если левая сторона верна.

[ ! -d /home/mlzboy/b2c2/shared/db ] && mkdir -p /home/mlzboy/b2c2/shared/db

Ответ 6

Я думаю, вам нужно немного переформатировать код:

#!/bin/bash
if [ ! -d /home/mlzboy/b2c2/shared/db ]; then
    mkdir -p /home/mlzboy/b2c2/shared/db;
fi;