Вы можете сопоставить пустую строку с регистром '')
или "")
.
Имя файла может содержать любой символ - даже странные, такие как символы, пробелы, символы новой строки и управляющие символы - поэтому пытаться выяснить, есть ли у вас имя файла, ища буквы и цифры, это не правильный путь сделать это. Вместо этого вы можете использовать тест [ -e filename ]
, чтобы проверить, является ли строка допустимым именем файла.
Кстати, вы должны поставить "$1"
в двойные кавычки, чтобы ваш скрипт работал, если имя файла содержит пробелы.
case "$1" in
'') echo empty;;
-l) echo ls;;
-L) echo ls -l;;
*) if [ -e "$1" ]; then
echo filename
else
echo usage >&2 # echo to stderr
exit 1
fi;;
esac