[ -f $num3 ]
Не имеет смысла, поскольку вы применяете оператор split + glob к содержимому
$ num3
.[ -f "$num3" ]
Проверяет, разрешается ли путь
$ num3
(абсолютный, если он начинается с/
, относительно текущего рабочего каталога, если нет) в файл типа ] обычный или символическую ссылку на обычный файл.Если вы хотите проверить, является ли
$ num3
относительно данного каталога обычным файлом, просто используйте:dir=/some/dir [ -f "$dir/$sum3" ]
Вы можете заранее проверить, что
$ sum3
не " t начинаются с/
или не содержат/
.Обратите внимание, что если
$ dir
равно/
, этот подход не будет работать в системах , которые обрабатывают пути// foo / bar
специально ]. Так что вы можете захотеть обработать случайdir = /
специально.case $dir in /) file=$dir$num3 *) file=$dir/$num3 esac [ -f "$file" ]
Чтобы проверить, что
$ num3
- это относительный путь (к обычному файлу) любого каталога в дереве каталогов с корнем в текущем каталоге, лучше всего использовать] zsh
вместо:files=(**/$num3(DN-.)) if (($#files > 0)); then echo "Success: $#files such file(s) found" else echo Failure fi