J'ai un if
dans mon script bash qui doit vérifier si l'un des 2 fichiers existe, s'ils n'existent pas, il devrait correspondre à l'écho.
Code que j'ai:
if [[ ! -f /etc/benchmarking/code ]] && [[ ! -f /etc/benchmarking/code.class ]]; then
echo "match"
fi
Mais cela ne semble pas fonctionner pour une raison quelconque.
Je suis sûr à 110% que ces 2 fichiers n'existent pas. Je ne reçois aucune erreur, il n'entre simplement pas dans le if
.
Je suis nouveau dans les scripts bash, donc je ne suis pas sûr de ce qui pourrait mal se passer.
[[ -f xxx ]]
renvoie vrai si xxx existe et est un fichier normal (ou un lien symbolique vers un fichier normal). Il retournera false s'il n'existe pas, ou s'il ne peut pas dire s'il existe ou non ou s'il existe mais n'est pas un fichier normal (répertoire, pipe, périphérique, socket ...) ou s'il s'agit d'un lien symbolique à un fichier qui n'existe pas ou qui ne peut pas dire s'il existe ou non ou n'est pas un fichier normal ... [[ -e $file ]] || [[ -L $file ]]
est plus proche d'un test d'existence. ls -d -- "$file" > /dev/null 2>&1
est encore plus proche. Et en règle générale, ce type de test conduit à des conditions de course. Peut-être qu'il y a une autre façon.
[[ ! -f /etc/.../... ]]; echo $?
pour chacun.