3586 votes

Comment savoir si un fichier régulier n'existe pas dans Bash ?

J'ai utilisé le script suivant pour voir si un fichier existe :

#!/bin/bash

FILE=$1     
if [ -f $FILE ]; then
   echo "File $FILE exists."
else
   echo "File $FILE does not exist."
fi

Quelle est la syntaxe correcte à utiliser si je veux seulement vérifier si le fichier fait no existent ?

#!/bin/bash

FILE=$1     
if [ $FILE does not exist ]; then
   echo "File $FILE does not exist."
fi

209 votes

J'ai trouvé ceci liste des instructions conditionnelles de bash très utile.

11 votes

Étant la personne très paresseuse que je suis, j'aurais typiquement utilisé la construction de contournement stupide suivante : if [ -f $FILE ]; then; else; echo "File $FILE does not exist."; fi; C'est probablement une bonne chose que j'aie trouvé cette question à la place et que j'aie appris à le faire d'une manière plus correcte :)

6 votes

Pour être pendulaire, vous devriez dire "fichier ordinaire", car la plupart des documents UNIX/POSIX font référence de manière générique à tous les types d'entrées du système de fichiers par le simple terme "fichiers", par exemple, un lien symbolique est un type de fichier, tout comme un tuyau nommé, un fichier ordinaire, un répertoire, un bloc spécial, un caractère spécial, une socket, etc.

0voto

kta Points 4702
envfile=.env

if [ ! -f "$envfile" ]
then
    echo "$envfile does not exist"
    exit 1
fi

1 votes

Bien que ce code puisse résoudre le problème de l'OP, il est préférable d'inclure une explication sur la façon dont votre code répond au problème de l'OP. De cette façon, les futurs visiteurs pourront tirer des enseignements de votre article et l'appliquer à leur propre code. SO n'est pas un service de codage, mais une ressource de connaissances. En outre, les réponses complètes et de qualité ont plus de chances d'être validées. Ces caractéristiques, ainsi que l'exigence selon laquelle tous les messages doivent être autonomes, sont quelques-unes des forces de SO en tant que plateforme, qui la différencie des forums. Vous pouvez modifier votre message pour ajouter des informations supplémentaires et/ou pour compléter vos explications avec la documentation source.

Prograide.com

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.

Powered by:

X