#!/bin/bash
if [!-d /home/mlzboy/b2c2/shared/db]; then
mkdir -p /home/mlzboy/b2c2/shared/db;
fi;
Это не работает. Может ли кто-нибудь помочь?
#!/bin/bash
if [!-d /home/mlzboy/b2c2/shared/db]; then
mkdir -p /home/mlzboy/b2c2/shared/db;
fi;
Это не работает. Может ли кто-нибудь помочь?
Во-первых, в 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;
и т.д.
На самом деле нет необходимости проверять, существует ли это или нет. Поскольку вы уже хотите создать его, если он существует, просто mkdir будет делать
mkdir -p /home/mlzboy/b2c2/shared/db
Просто выполните:
mkdir /path/to/your/potentially/existing/folder
mkdir выдает ошибку, если папка allready существует. Чтобы игнорировать ошибки, напишите:
mkdir -p /path/to/your/potentially/existing/folder
Нет необходимости делать какие-либо проверки или что-то в этом роде.
Вам нужны пробелы внутри скобок [
и ]
:
#!/bin/bash
if [ ! -d /home/mlzboy/b2c2/shared/db ]
then
mkdir -p /home/mlzboy/b2c2/shared/db
fi
Более чистый способ, использовать краткую оценку логических операторов оболочки. Правая сторона оператора выполняется только в том случае, если левая сторона верна.
[ ! -d /home/mlzboy/b2c2/shared/db ] && mkdir -p /home/mlzboy/b2c2/shared/db
Я думаю, вам нужно немного переформатировать код:
#!/bin/bash
if [ ! -d /home/mlzboy/b2c2/shared/db ]; then
mkdir -p /home/mlzboy/b2c2/shared/db;
fi;