-L est le test pour le fichier existe et est également un lien symbolique
Si vous ne voulez pas tester si le fichier est un lien symbolique, mais simplement vérifier s'il existe quel que soit son type (fichier, répertoire, socket etc.), utilisez -e
Ainsi, si le fichier est réellement un fichier et pas seulement un lien symbolique, vous pouvez effectuer tous ces tests et obtenir un état de sortie dont la valeur indique la condition d'erreur. obtenir un état de sortie dont la valeur indique la condition d'erreur.
if [ ! \( -e "${file}" \) ]
then
echo "%ERROR: file ${file} does not exist!" >&2
exit 1
elif [ ! \( -f "${file}" \) ]
then
echo "%ERROR: ${file} is not a file!" >&2
exit 2
elif [ ! \( -r "${file}" \) ]
then
echo "%ERROR: file ${file} is not readable!" >&2
exit 3
elif [ ! \( -s "${file}" \) ]
then
echo "%ERROR: file ${file} is empty!" >&2
exit 4
fi
2 votes
Pour ce que ça vaut, si vous utilisez [[ ! -D $mda ]], ça marche très bien