Я хотел бы проверить, был ли файл создан и внесен в определенный каталог, который был подключен через SaMBa к машине Linux. Основываясь на дате, он должен проверить, есть ли файл с датой в имени. Сначала я создаю то, что должен искать «ls», тогда я делаю оператор if-else. Я что-то упустил, или мой код не так? Использование/bin/env bash. Вот мой сценарий:проверить, существует ли файл bash, не работает
#!/usr/bin/env bash
YESTERDAY=`date +%Y-%m-%d -d "yesterday"`
#YESTERDAY="test"
LOCATION="/some/directory/some/other/directory"
FILENAME="$LOCATION/*MEMB*$YESTERDAY*"
echo "Filename is $FILENAME"
if [ -e "$FILENAME" ]
then
echo "Found \"$FILENAME\" files from yesterday. WILL NOT SEND EMAIL."
else
echo "FILE FROM YESTERDAY \"$FILENAME\" NOT FOUND"
fi
Он никогда не попадет в «истинное» заявлении на всех, даже если есть файлы в директории со вчерашнего дня, а «остальное» выполняет все время. Если я изменил значение «ВЧЕРА» на «2015-02-09» (сегодня) или любое другое значение, которое истинно, оно также не попадет в истинное утверждение.
Я пробую литеральную директорию без переменной в -e, и она работает. Об одном единственном, когда я могу заставить конструкцию if работать, если я устанавливаю «имя файла» в файл в том же каталоге сценария. Не игнорирует ли слэш в тесте -e? Пожалуйста, предложите альтернативные способы.
В случае, если есть альтернатива, я знаю следующие сценарии: C++, Perl, начинающий-промежуточный сценарий bash, PHP и JavaScript. Благодаря!
FYI, имена всех шапок зарезервированы для переменных среды и встроенных оболочек; используя их для переменных, локальных для вашего сценария, рискует столкновениями пространства имен. –
Кроме того, BashFAQ # 4 находится на месте по этому вопросу: http://mywiki.wooledge.org/BashFAQ/004 –