Я хочу, чтобы программа выглядела так:
read a
if[ find . name $a ]; then
echo "You found the file"
else "You haven t found the file"
fi
Было ли что-нибудь найдено, find
всегда возвращает true. Можно использовать grep
, чтобы определить, нашел ли find
что-то:
read -r a
if find . -maxdepth 1 -name "$a" -print -quit | grep -q .
then
echo "You found the file"
else
echo "You haven't found the file"
fi
Выход после первого соответствия (-print -quit
) должен улучшить производительность, как Eliah отметил. Используйте -maxdepth 1
для ограничения результатов текущим каталогом - но затем find
излишество для этого.
Если не делают , имеют для использования эти find
команда, с помощью test
команда (или ее краткая форма [
... ]
), было бы легче, по моему скромному мнению. С test
, эти e
переключатель делает то, что Вы ищете.
#!/bin/bash
read -r a
if [[ -e $a ]]; then
echo "You found the file"
else
echo "You haven't found the file"
fi
, Но знать, что test
только ищет файл в текущем каталоге, не в любых подкаталогах (благодаря EliahKagan для напоминания).
можно найти хороший обзор приблизительно test
в хакеры Wiki