Я пишу сценарий Bash, который ищет файл, соответствующий заданному шаблону в каталоге, и при обнаружении выполняет дополнительную обработку.
#!/bin/sh
set -eu
INTERVAL=5
DIRECTORY=/home/methuselah
PATTERN=(MT*xx.txt)
while :
do
if [[ -e "$DIRECTORY/$PATTERN" ]]; then
echo "File has arrived. Starting processing..."
# Not sure about this!
for file in "$DIRECTORY/$PATTERN"; do
echo "foo" > "$file"
done
fi
echo "Waiting for file..."
sleep $INTERVAL
done
Прямо сейчас вышеприведенный скрипт ничего не делает, даже когда файл сбрасывается в каталог. Как я могу это исправить? И во-вторых, когда файл поступил в каталог, могу ли я вывести имя?
Обновление
#!/bin/bash
set -u
INTERVAL=5
DIRECTORY=/home/methuselah
PATTERN=(MT*xx.txt)
while :
do
if [[ -e $DIRECTORY/$PATTERN ]]; then
echo "File has arrived. Starting processing..."
# How do you print the file name out here?
fi
echo "Waiting for file..."
sleep $INTERVAL
done