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 n'existe pas ?
#!/bin/bash
FILE=$1
if [ $FILE does not exist ]; then
echo "File $FILE does not exist."
fi
La commande [test][1] ([
ici) a un opérateur logique "not" ; qui est le point d'exclamation (similaire à beaucoup d'autres langues). Essayez ceci :
if [ ! -f /tmp/foo.txt ]; then
echo "File not found!"
fi
Vous pouvez nier une expression avec "!" :
#!/bin/bash
FILE=$1
if [ ! -f "$FILE" ]
then
echo "File $FILE does not exist"
fi
La page de manuel appropriée est man test
ou, de manière équivalente, man [
-- ou help test
ou help [
pour la commande bash intégrée.
[[ -f $FILE ]] || printf '%s does not exist!\n' "$FILE"
Il est également possible que le fichier soit un lien symbolique rompu, ou un fichier non régulier, comme par exemple une socket, un device ou un fifo. Par exemple, pour ajouter une vérification des liens symboliques rompus :
if [[ ! -f $FILE ]]; then
if [[ -L $FILE ]]; then
printf '%s is a broken symlink!\n' "$FILE"
else
printf '%s does not exist!\n' "$FILE"
fi
fi