#!/bin/bash
if [!-d /home/mlzboy/b2c2/shared/db]; then
mkdir -p /home/mlzboy/b2c2/shared/db;
fi;
Cela ne semble pas fonctionner. Quelqu'un peut-il aider?
Premièrement, dans bash "[" est juste une commande, qui attend la chaîne "]" comme dernier argument, ainsi les espaces blancs avant le crochet de fermeture (ainsi qu'entre "!" Et "-d" qui doivent être deux arguments séparés aussi) est important:
if [ ! -d /home/mlzboy/b2c2/shared/db ]; then
mkdir -p /home/mlzboy/b2c2/shared/db;
fi
Deuxièmement, puisque vous utilisez l'option -p pour passer à mkdir
, cette vérification est inutile, car c'est ce qui se passe en premier lieu. Ecrivez:
mkdir -p /home/mlzboy/b2c2/shared/db;
et c'est tout.
En fait, il n’est pas nécessaire de vérifier s’il existe ou non. Puisque vous voulez déjà le créer s'il existe, il suffit de mkdir
mkdir -p /home/mlzboy/b2c2/shared/db
Faites simplement:
mkdir /path/to/your/potentially/existing/folder
mkdir lancera une erreur si le dossier existe déjà. Pour ignorer les erreurs, écrivez:
mkdir -p /path/to/your/potentially/existing/folder
Pas besoin de faire une vérification ou quelque chose comme ça.
Pour référence:
-p, --parents no error if existing, make parent directories as needed
http://man7.org/linux/man-pages/man1/mkdir.1.html
Vous avez besoin d'espaces entre les crochets [
et ]
:
#!/bin/bash
if [ ! -d /home/mlzboy/b2c2/shared/db ]
then
mkdir -p /home/mlzboy/b2c2/shared/db
fi
Plus propre, exploitez l'évaluation des raccourcis des opérateurs logiques de Shell. Le côté droit de l'opérateur est exécuté uniquement si le côté gauche est vrai.
[ ! -d /home/mlzboy/b2c2/shared/db ] && mkdir -p /home/mlzboy/b2c2/shared/db
Je pense que vous devriez reformater un peu votre code:
#!/bin/bash
if [ ! -d /home/mlzboy/b2c2/shared/db ]; then
mkdir -p /home/mlzboy/b2c2/shared/db;
fi;