Ответ 1
Достаточно проверить -s
, потому что он говорит:
ФАЙЛ существует и имеет размер больше нуля
http://unixhelp.ed.ac.uk/CGI/man-cgi?test
также ваш выход переключается, поэтому его выходы does not exists
когда файл существует, потому что -s
выдаст TRUE
если файл существует и имеет size > 0
.
Поэтому правильно вы должны использовать:
echo " enter file name "
read file
if [ -s "$file" ]
then
echo " file exists and is not empty "
else
echo " file does not exist, or is empty "
fi
Это даст вам ожидаемый результат.
Также это должно быть
read file
вместо
read $file
Если вы хотите получить дополнительную информацию, я рекомендую прочитать man test
man read
а man read