#!/bin/bash
if [!-d /home/mlzboy/b2c2/shared/db]; then
mkdir -p /home/mlzboy/b2c2/shared/db;
fi;
これはうまくいかないようです。誰も手伝ってくれる?
まず、bashでは "["は最後の引数として文字列 "]"を必要とする単なるコマンドです。したがって、閉じ括弧の前の空白文字(および "!"と "-d"の間の2つの引数)も)重要です:
if [ ! -d /home/mlzboy/b2c2/shared/db ]; then
mkdir -p /home/mlzboy/b2c2/shared/db;
fi
第二に、あなたはmkdir
への-pスイッチを使っているので、これはそもそもしていることなのでこのチェックは無用です。書くだけ:
mkdir -p /home/mlzboy/b2c2/shared/db;
以上です。
実際に存在するかどうかを確認する必要はありません。すでに存在する場合は作成したいので、mkdirを実行してください。
mkdir -p /home/mlzboy/b2c2/shared/db
簡単に
mkdir /path/to/your/potentially/existing/folder
フォルダが既に存在する場合、mkdirはエラーをスローします。エラーを無視するには
mkdir -p /path/to/your/potentially/existing/folder
確認などの必要はありません。
参考のため:
-p, --parents no error if existing, make parent directories as needed
http://man7.org/linux/man-pages/man1/mkdir.1.html
[
と]
の括弧内にスペースが必要です。
#!/bin/bash
if [ ! -d /home/mlzboy/b2c2/shared/db ]
then
mkdir -p /home/mlzboy/b2c2/shared/db
fi
わかりやすい方法で、Shell論理演算子のショートカット評価を活用します。演算子の右側は、左側が真の場合にのみ実行されます。
[ ! -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;