web-dev-qa-db-ja.com

フォルダがまだ存在しない場合にBashを使用してフォルダを作成する方法

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

これはうまくいかないようです。誰も手伝ってくれる?

155
mlzboy

まず、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;

以上です。

249
Maxim Sloyko

実際に存在するかどうかを確認する必要はありません。すでに存在する場合は作成したいので、mkdirを実行してください。

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

簡単に

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

58
Automatico

[]の括弧内にスペースが必要です。

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

わかりやすい方法で、Shell論理演算子のショートカット評価を活用します。演算子の右側は、左側が真の場合にのみ実行されます。

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

私はあなたがあなたのコードを少し再フォーマットするべきだと思います:

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