-L - це тест на існування файлу, а також є символічним посиланням
Якщо ви не хочете перевіряти, чи файл є символічним посиланням, а просто перевірити, чи існує він незалежно від типу (файл, каталог, сокет тощо), тоді використовуйте -e
Отже, якщо файл дійсно файл, а не просто символічне посилання, ви можете зробити всі ці тести і отримати статус виходу, значення якого вказує на стан помилки.
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