smartctl сообщает об общем пройденном тесте работоспособности, но тесты не прошли?

[ -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
-1
24.02.2019, 16:37
0 ответов

Теги

Похожие вопросы