Script Shell - Faire de répertoire s'il n'existe pas
Je veux entrer le nom d'un répertoire et de vérifier s'il existe.
Si elle n'existe pas je veux créer mais je reçois l'erreur mkdir: cannot create directory'./' File exists
Mon code dit que le fichier existe, même si elle ne le fait pas. Ce que je fais mal?
echo "Enter directory name"
read dirname
if [[ ! -d "$dirname" ]]
then
if [ -L $dirname]
then
echo "File doesn't exist. Creating now"
mkdir ./$dirname
echo "File created"
else
echo "File exists"
fi
fi
Pourquoi
Quand je pars ./ il dit ne peut créer aucun fichier ou répertoire
Essayez de citer, peut-être que vous avez quelques espaces autour et il est en train de faire
mkdir ./$dirname
et pas seulement mkdir "$dirname"
?Quand je pars ./ il dit ne peut créer aucun fichier ou répertoire
Essayez de citer, peut-être que vous avez quelques espaces autour et il est en train de faire
mkdir ./ your_dir
au lieu de mkdir ./your_dir
. Donc, vous devriez utiliser mkdir "$dirname"
seul.OriginalL'auteur Pizzaman | 2014-04-07
Vous devez vous connecter pour publier un commentaire.
Regarder le message d'erreur produit par cette ligne: “[: manquant `]'” ou quelque chose du genre (en fonction du shell que vous utilisez). Vous avez besoin d'un espace à l'intérieur de parenthèses. Vous avez également besoin de guillemets autour de la variable d'extension, sauf si vous utilisez deux crochets; vous pouvez soit apprendre les règles, ou l'utilisation d'une règle simple: toujours utiliser des guillemets autour de la variable de substitution et de la substitution de commande —
"$foo"
,"$(foo)"
.Puis, il y a une erreur de logique: vous êtes en train de créer le répertoire seulement si il existe un lien symbolique qui ne pointe pas vers un répertoire. Vous avez sans doute fait pour avoir une négation.
N'oubliez pas que le répertoire peut être créée, tandis que votre script est en cours d'exécution, il est donc possible que votre chèque vous montrer que le répertoire n'existe pas, mais le répertoire lorsque vous essayez de créer. Ne jamais faire “vérifier puis faites”, toujours faire “faire et de capture de l'échec”.
La bonne façon de créer un répertoire s'il n'existe pas est
(Les guillemets dans le cas
$dirname
contient des espaces ou d'expansion des caractères, la--
dans le cas où il commence avec-
.)OriginalL'auteur Gilles
essayez ceci:
ls yourdir 2>/dev/null||mkdir yourdir
, qui est minuscule et concis et remplit votre tâche.L'idée ici est de vérifier si vous êtes en mesure de
ls
le répertoire. Lels
commande renvoie un code de sortie non nulle si le répertoire n'existe pas, et donc la commande sur le côté droit de la||
clause sera invoquée. Si le répertoire existe déjà, lels
commande sera de retour0
- vrai - et seule la gauche de||
seront évaluésOriginalL'auteur squid
Essayez ce code:
Journal De Sortie:
OriginalL'auteur Chitta ranjan
OriginalL'auteur Vasanta Koli