#!/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 nous aider ?
#!/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 nous aider ?
Tout d'abord, dans Bash [
est juste une commande, qui attend une chaîne de caractères ]
en tant que dernier argument, de sorte que l'espace avant le crochet fermant (ainsi qu'entre les mots !
y -d
qui doivent aussi être deux arguments distincts) est important :
if [ ! -d /home/mlzboy/b2c2/shared/db ]; then
mkdir -p /home/mlzboy/b2c2/shared/db;
fi
Deuxièmement, puisque vous utilisez -p
pour mkdir
ce contrôle est inutile, car c'est ce qu'il fait. fait en premier lieu. Ecris juste :
mkdir -p /home/mlzboy/b2c2/shared/db;
et c'est tout.
Mon Dieu, je ne savais pas que "[" était une commande. Cela explique tellement de mes problèmes... Facilement la chose la plus utile que j'ai jamais lu sur StackOverflow.
Wow ! Savoir que "[" est une commande dans bash est une telle révélation. Je sens que beaucoup de problèmes avec mes scripts de bash sont maintenant résolus !
Il suffit de le faire :
mkdir /path/to/your/potentially/existing/folder
mkdir lancera une erreur si le dossier existe déjà. Pour ignorer ces erreurs, écrivez :
mkdir -p /path/to/your/potentially/existing/folder
Il n'y a pas besoin de faire de vérification ou autre.
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
L'argument -p
n'ignore pas exactement les erreurs : il invoque un mode différent où tous les composants du chemin qui n'existent pas sont créés (et donc ce n'est pas une erreur s'il arrive qu'aucun ne doive être créé). Le comportement est différent puisqu'il créera des composants autres que le dernier, ce qui peut ou non être souhaitable.
Mmh, pas plus propre : juste plus court. Il est difficile de comprendre le sens d'une telle affirmation si vous la rencontrez.
J'aime ça, bien que le -p
rend la vérification inutile. Vous pouvez tout de même l'utiliser lorsque vous ne voulez pas utiliser -p
c'est alors que vous ne veulent pas tous les répertoires parents à créer automatiquement.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
4 votes
Pourquoi des points-virgules ?
1 votes
Le site
;
Le jeton est un séparateur de commande, tout comme la nouvelle ligne. Commethen
est une commande distincte, le point-virgule précédent est nécessaire pour pouvoir l'écrire sur la même ligne. Les points-virgules aprèsmkdir
yfi
sont superflus.